Skip to main content

⚡ Ansible Cheat Sheet

Cette page regroupe les commandes Ansible les plus utilisées pour administrer la plateforme Homelab.


🎯 Objectif

Cette documentation sert de référence rapide lors des opérations quotidiennes.

  • Gestion des secrets
  • Exécution des playbooks
  • Commandes Ad-Hoc
  • Débogage
  • Mise à jour du cluster Kubernetes

🔐 Gestion des secrets (Ansible Vault)

Le mot de passe du coffre est automatiquement lu depuis :

/config/.vault/vault_password.txt

Chiffrer une variable

Permet d'insérer une valeur chiffrée directement dans un fichier YAML.

ansible-vault encrypt_string --stdin-name 'my_variable'

Procédure :

  1. Taper la valeur à chiffrer
  2. Appuyer sur Entrée
  3. Faire Ctrl+D deux fois
  4. Copier le bloc !vault obtenu dans le fichier YAML

Modifier un fichier Vault

ansible-vault edit infra/ansible/vars/my_secrets.yml

Chiffrer un fichier

ansible-vault encrypt mon_fichier_clair.yml

Déchiffrer un fichier

ansible-vault decrypt mon_fichier_chiffre.yml

⚠ Attention : le fichier reste en clair sur le disque après déchiffrement.


▶ Exécution des Playbooks

Préparer l'environnement

export ANSIBLE_ROLES_PATH=$(pwd)/infra/ansible/roles
export ANSIBLE_HOST_KEY_CHECKING=False

Lancer un playbook

ansible-playbook \
-i infra/ansible/inventory.yml \
infra/ansible/playbooks/MON_PLAYBOOK.yml

🐞 Options de Debug

Option Description
--check Simulation sans modification (Dry Run)
--diff Affiche les différences sur les fichiers modifiés
--limit <host> Exécute uniquement sur un hôte ou un groupe
-vvv Mode très verbeux pour le diagnostic

Exemples

ansible-playbook ... --check

ansible-playbook ... --limit "squall"

ansible-playbook ... -vvv

⚡ Commandes Ad-Hoc

Tester la connectivité

Toutes les machines

ansible all \
-i infra/ansible/inventory.yml \
-m ping

Cluster Kubernetes

ansible kubernetes_nodes \
-i infra/ansible/inventory.yml \
-m ping

Exécuter une commande

Afficher l'uptime des LXC

ansible proxmox_lxcs \
-i infra/ansible/inventory.yml \
-a "uptime"

Redémarrer un service

ansible web-server \
-i infra/ansible/inventory.yml \
-b \
-m service \
-a "name=apache2 state=restarted"

☸ Upgrade du Cluster Kubernetes

Playbook Ansible

ansible-playbook \
-i infra/ansible/inventory.yml \
infra/ansible/playbooks/upgrade-cluster.yml \
-e "target_version=1.3x.x-1.1"

Via Moon

moon run :upgrade-k8s-cluster -- \
-e "target_version=1.3x.x-1.1"

💡 Bonnes pratiques

  • Toujours exécuter un --check avant un changement important.
  • Utiliser --limit pour tester sur une seule machine.
  • Préférer les playbooks aux commandes Ad-Hoc pour les modifications permanentes.
  • Ne jamais stocker un secret en clair dans Git.
  • Privilégier les variables Vault ou les Sealed Secrets selon le contexte.

```