Aide mémoire commandes Ansible
Les options importantes
-i <inventaire>
-> Utiliser un fichier d'inventaire spécifique.
-u <user>
-> Utilisateur distant
-k
-> Demande le mot de passe pour SSH (à éviter)
-K
-> Demande le mot de passe pour élévation de privilèges
-C
-> Effectue un check (dry run)
-D
-> Effectue un diff et renvoi les changement en sortie
-m <module>
-> Spécifier le module à utiliser (command, copy, yum, etc...).
-a "<arguments>"
-> Passer les arguments du module.
-e "<variable>=<valeur>"
-> Passer des variables.
-v ou -vvv
-> Mode verbose (plus de détails).
-b
-> Exécuter avec sudo.
-f <nombre>
-> Nombre d’hôtes à exécuter en parallèle.
-t
-> Filtrer sur les tags
--ask-vault-pass
-> Déchiffrer un secret vault.
--ask-vault
-> Prompt pour le mot de passe du secret vault.
--vault-password-file
-> Fichier pour déchiffrer le mot de passe.
--flush-cache
-> Vider le cache collecté à chaque execution de playbook.
--step
-> Jouer une tâche à la fois avec confirmation prompt.
--start-at-task
-> Commencer sur une tache pécise.
--list-tags
-> Lister tous les tags.
--list-tasks
-> Lister toutes les tâches
Commandes Ansible
ansible all -u vagrant -m ping
-> Vérifie la connectivité avec tous les hôtes définis dans l'inventaire avec l'utilisateur vagrant.
ansible all -C -D -m ping
-> Vérifie la connectivité, fait un check et renvoi les différences.
ansible webservers -m command -a "uptime"
-> Exécute la commande uptime sur tous les hôtes du groupe webservers.
ansible all -m shell -a "ls -la /home"
-> Exécute la commande "ls -la /home" sur tous les hôtes.
ansible all -m command -a "systemctl restart apache2" -b
-> Exécute la commande avec les privilèges d’administrateur (sudo).
Commandes ansible config
ansible-config view
-> Voir le contenu du fichier ansible.cfg
ansible-config list
-> liste toutes les variables et leurs valeurs
ansible-config init
-> initialise un fichier de configuration
Gérer des Playbooks
ansible-playbook deploy.yml
-> Exécute le playbook deploy.yml.
ansible-playbook deploy.yml --syntax-check
-> Vérifie la syntaxe du playbook sans l'exécuter.
ansible-playbook -i inventory.ini deploy.yml
-> Exécute un playbook en utilisant un fichier d'inventaire spécifique.
ansible-playbook deploy.yml -f 10
-> Exécute le playbook avec une concurrence de 10 hôtes en parallèle.
ansible-playbook deploy.yml -v
-> Active le mode verbose pour obtenir des informations détaillées pendant l'exécution.
ansible-playbook deploy.yml --check
-> Exécute le playbook en mode simulation pour voir ce qui se passerait sans appliquer de modifications.
ansible-playbook deploy.yml --diff
-> Affiche les différences lors de la mise à jour des fichiers.
Inventaire
ansible-inventory -i inventory.yml --list --yaml
-> Affiche tous les hôtes de l'inventaire et leurs variables au format YAML.
ansible-inventory -i inventory.yml --host webserver1
-> Affiche les informations détaillées de l'hôte webserver1.
ansible-inventory -i inventory.yml --graph --vars
-> Afficher l'inventaire et les variables avec une structure arborescente
Modules Ansible
ansible all -b -K -m raw -a "apt install -y python"
-> Le module RAW permet de lancer des commandes sans passer par python.
ansible all -m yum -a "name=httpd state=present"
-> Installe le paquet httpd avec le module YUM.
ansible all -m copy -a "src=/home/user/config.txt dest=/etc/config.txt"
-> Copie le fichier local config.txt vers les hôtes distants.
ansible all -m user -a "name=john state=present"
-> Crée ou modifie un utilisateur john.
ansible all -m command -a "echo $MY_VAR" -e "MY_VAR=hello"
-> Définit et passe une variable d'environnement.
variables
Options d'Extra Vars
-e "variable=value"
-> Passer une ou plusieurs variables simples.
-e @<fichier.yml>
-> Passer des variables définies dans un fichier YAML.
-e @<fichier.json>
-> Passer des variables définies dans un fichier JSON.
-e "variable={'key':'value'}"
-> Passer des variables sous forme de dictionnaire.
-e "var1=value1 var2=value2"
-> Passer plusieurs variables en une seule ligne.
Exemples d'Extra Vars
ansible-playbook deploy.yml -e "env=production"
-> Passer la variable env=production dans un playbook.
ansible-playbook deploy.yml -e "env=production user=admin"
-> Passer les variables env=production et user=admin.
ansible-playbook deploy.yml -e "config={'server':'web1','port':80}"
-> Passer une variable sous forme de dictionnaire.
ansible-playbook deploy.yml -e @vars.yml
-> Passer un fichier vars.yml contenant des variables.
ansible-playbook deploy.yml -e @vars.json
-> Passer un fichier vars.json contenant des variables.
ansible-playbook -i inventory.ini deploy.yml -e "env=production"
-> Passer la variable env tout en spécifiant un inventaire.
ansible webservers -m command -a "echo $USER" -e "USER=admin"
-> Passer une variable user lors de l'exécution d'une commande sur un groupe d'hôtes
ansible webservers -m debug -a "msg={{ config }}" -e "config={'server':'web1','port':80}"
-> Passer un dictionnaire avec des extra vars dans une commande ansible
ansible-playbook -i dynamic_inventory.py deploy.yml -e "env=production"
-> Passer des extra vars dans un inventaire dynamique (API ou autre source)
Commandes Ansible galaxy
ansible-galaxy search nginx
-> rechercher des rôles liés à la gestion de Nginx
ansible-galaxy install geerlingguy.nginx
-> télécharger un rôle depuis Ansible Galaxy dans votre projet
ansible-galaxy install -r requirements.yml
-> Télécharger plusieurs rôles à partir d'un fichier de dépendances(requirements.yml)
ansible-galaxy install geerlingguy.nginx --force
-> Mettre à jour un rôle
ansible-galaxy remove geerlingguy.nginx
-> Supprimer un rôle
ansible-galaxy collection install ansible.builtin
-> Télécharger une collection
ansible-galaxy collection install ansible.builtin --upgrade
-> Mettre à jour une collection
ansible-galaxy list
-> Lister les rôles installés
ansible-galaxy init mon_role_nginx
-> Créer un rôle Ansible
ansible-galaxy collection init my_namespace.my_collection
-> Créer une collection Ansible
ansible-galaxy login
-> Connexion sur ansible galaxy
ansible-galaxy role upload ./mon_role_nginx
-> Publier un rôle sur Galaxy
ansible-galaxy info geerlingguy.nginx
-> Consulter des informations sur un rôle