Aller au contenu principal

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