14 Kio
title | description | published | date | tags | editor | dateCreated |
---|---|---|---|---|---|---|
Ansible - Les modules | Utilisation de différents modules Ansible | true | 2021-07-10T19:08:16.559Z | ansible, configuration, module | markdown | 2021-07-09T15:18:02.744Z |
FILE : DIRECTORY, SOFTLINK, DROITS, TOUCH...
Description
Documentation : https://docs.ansible.com/ansible/latest/modules/file_module.html
Commande : ansible-doc file
Objectif : gestion des fichiers et répertoires
Périmètre : fichiers, répertoires, liens symboliques
Paramètres
|--|--|
| attribute
| Paramètres particuliers d'un fichier : immutabilité etc... (https://fr.wikipedia.org/wiki/Chattr)|
| force
| Pour les liens symboliques (si le fichier source existe pas, la destination existe)|
| group/owner
| Propriétaire et groupe de l'élément|
| mode
| Sous les deux formats : "0755" ou "u=rwx,g=rx,o=rx"|
| path
| Localisation|
| recurse
| Création du chemin intermédiaire si n'existe pas (yes/no) > pour directory uniquement|
| src
| Pour les liens (hard ou symbolique)|
| state
| Type (absent / directory / file / hard / link / touch)|
Commandes
Créer un répertoire
- name: création du répertoire /tmp/xavki
file:
path: /tmp/xavki/
state: directory
Le propriétaire du dossier et l'utilisateur de connexion {.is-info}
Changement de user > root
- name: création du répertoire /tmp/xavki
file:
path: /tmp/xavki/
state: directory
owner: root
become = yes > différents endroits pour le faire
- cli > -b
- playbook/tasks > become: yes
- name: création du répertoire /tmp/xavki
file:
path: /tmp/xavki/
state: directory
owner: root
become: yes
Attention à l'indentation {.is-warning}
Modification du groupe et des droits (RWX-RX-RX - 0755) | stat
- name: création du répertoire /tmp/xavki
file:
path: /tmp/xavki/
state: directory
owner: root
group: root
mode: 0755
become: yes
Récursivité (pour directory uniquement
- name: création du répertoire /tmp/xavki
file:
path: /tmp/xavki/1/2/3/4
recurse: yes
state: directory
owner: root
group: root
mode: 0755
Touch
- name: création du répertoire /tmp/xavki
file:
path: /tmp/xavki/1/2/3/4/fichier.txt
state: touch
owner: root
group: root
mode: 0755
Lien symbolique = lien vers fichier (diff avec hardlink = lien vers inode)
- name: création du répertoire /tmp/xavki
file:
src: /tmp/xavki/1/2/3/4/
dest: /tmp/symlink
state: link #hard
owner: root
group: root
mode: 0755
Suppression de fichier
- name: dir sans idempotence
file:
path: /tmp/xavki.txt
state: absent
Suppression de répertoire récursive
- name: dir sans idempotence
file:
path: /tmp/xavki/
state: absent
USER : CREER, SUPPRIMER, GERER DES UTILISATEURS
Description
Documentation : https://docs.ansible.com/ansible/latest/modules/user_module.html
Commande : ansible-doc user
Equivalence : useradd/adduser/userdel/deluser/luseradd
Paramètres
|--|--|
| append yes/no
| En lien avec groups / ajout aux groupes ou changement |
| comment
| Commentaire associé au user |
| create_home yes/no
| Création de la home ou pas |
| expires format epoch
| Date d'expiration |
| force
| Permet de forcer la suppression des fichier d'un user |
| generate_ssh_key
| Génère en même temps une clef ssh à l'utilisateur |
| group
| Définit le groupe principal de l'utilisateur |
| groups
| Définit les groupes secondaires qui seront ajoutés |
| home
| Définition de la home du user |
| local
| Dans le cas d'une décentralisation de la gestion des users (forcer localement) |
| move_home
| Pour déplacer une home existante |
| name
| nom utilisateur |
| password
| Hash du password |
| password_lock
| Vérouiller le password du user |
| remove
| En cas de state absent, suppression en même des répertoires du user |
| shell
| Définition sur shell attribué au user |
| skeleton
| Avec create_home, pour définir le squelette à appliquer |
| ssh_key_bits
| Taille de la clef ssh générée |
| ssh_key_comment
| Commentaire de la clef ssh |
| ssh_key_file
| Spécifie le chemin de la clef ssh |
| ssh_key_passphrase
| Définir la passphrase de la clef ssh sinon pas de passphrase |
| ssh_key_type
| rsa par défaut, type de clef ssh |
| state
| Création ou suppression |
| system
| A la création définir ou non un compte system |
| uid
| Fixer l'uid |
| update_password always/on_create
| Soit mettre à jour sur changement ou juste création
Commandes
Création d'un user avec password
- name: création de xavki
user:
name: xavki
state: present
password: "{{ 'password' | password_hash('sha512') }}"
Ajout au groupe sudo
- name: création de xavki
user:
name: xavki
state: present
groups: sudo
append: yes
password: "{{ 'password' | password_hash('sha512') }}"
Fixer l'uid
- name: création de xavki
user:
name: xavki
state: present
uid: 1200
groups: sudo
append: yes
password: "{{ 'password' | password_hash('sha512') }}"
Génération de la clef ssh
- name: création de xavki
user:
name: xavki
state: present
uid: 1200
groups: sudo
append: yes
generate_ssh_key: yes
password: "{{ 'password' | password_hash('sha512') }}"
Ajout d'un register et découvrir les outputs
- name: création du user xavki
user:
name: xavki
state: present
generate_ssh_key: yes
uid: 1200
groups: sudo
append: yes
password: "{{ 'password' | password_hash('sha512') }}"
register: mavar
- name: debug
debug:
msg: "{{ mavar }}"
nologin avec le shell
- name: création du user xavki
user:
name: xavki
state: present
shell: /sbin/nologin
generate_ssh_key: yes
uid: 1200
groups: sudo
append: yes
password: "{{ 'password' | password_hash('sha512') }}"
password_lock: yes
Suppression d'un user
- name: création du user xavki
user:
name: xavki
state: absent
REGISTER & STAT
Description
Documentation : https://docs.ansible.com/ansible/latest/modules/stat_module.html
Paramètres
|--|--|
| path
| Chemin du fichier ou répertoire |
| follow
| Suivre les liens symboliques |
| get_checksum
| Récupérer la checksum |
| checksum_algorithm
| Type de checksum (md5, etc) |
| get_mime
| Récupération du type de données |
Commandes
Création d'un fichier
- name: création d'un fichier
file:
path: /tmp/xavki.txt
state: touch
owner: xavki
Utilisation de stat
- name: check avec stat
stat:
path: /tmp/xavki.txt
Récupération de la variable
- name: check avec stat
stat:
path: /tmp/xavki.txt
register: __fichier_xavki_exist
- name: debug
debug:
var: __fichier_xavki
Récupération d'une clef
- name: debug
debug:
var: __fichier_xavki.stat.exists
Utilisation conditionnnel
- name: création répertoire xavki
file:
path: /tmp/xavki
state: directory
when: __fichier_xavki.stat.exists
Exemple
tasks:
- name: création d'un fichier
file:
path: /tmp/xavki.txt
state: touch
owner: root
when: xavki_file is defined
- name: check avec stat
stat:
path: /tmp/xavki.txt
register: __fichier_xavki
- name: debug
debug:
var: __fichier_xavki.stat.exists
- name: création répertoire xavki
file:
path: /tmp/xavki
state: directory
when: __fichier_xavki.stat.exists and xavki_file is defined
APT : INSTALLATION, GESTION, SUPPRESSION DE PAQUETS
Description
Documentation : https://docs.ansible.com/ansible/latest/collections/ansible/builtin/apt_module.html
Commande : apt
Paramètres
|--|--|
| allow_unauthenticated
| Autoriser l'installation de paquets non authentifiés |
| autoclean
| Effacement des anciennes versions des paquets |
| cache_valid_time
| Durée durant laquelle ne pas remettre à jour le cache apt |
| deb
| Lien vers une source de paquet .deb |
| default_release
| Version par défaut |
| dpkg_options
| Option d'installation dpkg |
| force
| Equivaut à --force-yes, désactive la signature et certificats de paquets |
| force_apt_get
| Force l'utilisation de apt-get |
| install_recommends
| Activer ou désactiver les paquets recommandés (dépend des OS) |
| name
| Nom du paquet |
| only_upgrade
| Met à jour uniquement les paquets installés |
| policy_rc_d
| Règle de déclenchement automatique à l'installation d'un paquet |
| purge
| Purge les fichiers de configurations (--purge) |
| state present / absent / latest / fixed / build-dep
| Permet de choisir le status voulu |
| update_cache
| Réaliser un update avant l'installation |
| update_cache_retries
| Nombre de tentatives de l'update |
| update_cache_retry_max_delay
| Délai de chaque retry |
| upgrade : yes / no / safe / dist / full
| |
Commandes
Mise à jour du cache
- name:
apt:
update_cache: yes
cache_valid_time: 3600
Délai de validité du cache
- name:
apt:
name: haproxy
update_cache: yes
cache_valid_time: 60
Utiliser la version backport
- name:
apt:
name: haproxy
default_release: stretch-backports
update_cache: yes
cache_valid_time: 60
Requière :
apt list -a haproxy
etapt list -i haproxy
{.is-warning}
Mise à jour
- name:
apt:
name: haproxy
update_cache: yes
cache_valid_time: 60
state: latest
Suppression
- name:
apt:
name: haproxy
state: absent
Suppression complète
- name:
apt:
name: haproxy
state: absent
purge: yes
autoremove: yes
REBOOT : REDEMARRER UN SERVEUR APRES UPGRADE
Description
Documentation : https://docs.ansible.com/ansible/latest/collections/ansible/builtin/reboot_module.html Objectifs : rebooter des machines sous conditions et reprendre après
Paramètres
|--|--|
| boot_time_command
| Command qui génère l'id de reboot |
| connect_timeout
| Timeout de la connexion en seconde |
| msg
| Message délivré avant le reboot |
| post_reboot_delay
| Temps d'attente en secondes après le reboot pour continuer |
| pre_reboot_delay
| Délai avant de lancer le reboot |
| reboot_timeout
| Timeout du reboot lui-même |
| search_paths
| Path pour la commande shutdown |
| test_command
| Commande de test pour confirmer le succés du reboot |
Commandes
Démonstration avec de simples fichiers
- name: mon premier playbook
hosts: all
remote_user: vagrant
become: yes
tasks:
- name: create file
file:
path: /tmp/xavki.txt
state: touch
- name: test
stat:
path: /tmp/xavki.txt
register: __file_exist
- name: lancement du reboot avec reboot
reboot:
msg: "Reboot via ansible"
connect_timeout: 5
reboot_timeout: 300
pre_reboot_delay: 0
post_reboot_delay: 30
test_command: uptime
when: __file_exist.stat.exists
- name: file2
file:
path: /tmp/xavki2.txt
state: touch
Exemple
Mise à jours
- name: update cache
apt:
update_cache: yes
force_apt_get: yes
cache_valid_time: 3600
- name: upgrade général
apt:
upgrade: dist
force_apt_get: yes
- name: vérification à partir du fichier reboot_required
register: reboot_required_file
stat:
path: /var/run/reboot-required
- name: lancement du reboot avec reboot
reboot:
msg: "Reboot via ansible"
connect_timeout: 5
reboot_timeout: 300
pre_reboot_delay: 0
post_reboot_delay: 30
test_command: uptime
when: reboot_required_file.stat.exists