Ansible
Ici nous essayerons de configurer des vms à l'aide d'ansible. On suppose que les vms ont été créées avec une authentification SSH par clé ( comme fait ici )
D'autres playbook et role ansible dispo sur mon repo
Préparation de l’environnement SSH
Pour automatiser la configuration des VMs fraîchement créées (IP : 10.10.10.50 à 10.10.10.52), il est recommandé d’utiliser une clé SSH privée et le gestionnaire d’agents SSH pour éviter de ressaisir la passphrase à chaque connexion :
Le fichier ~/.ssh/id_rsa
correspond à la clé privée ajoutée à l’agent SSH local. Elle est associée à la clé publique injectée automatiquement dans les VMs via le code Terraform. Cette paire de clés permet à des outils comme Ansible d’établir une connexion SSH sans mot de passe avec les VMs.
Dans le cas où vous ne passez pas par Terraform, assurez-vous simplement que la clé publique est bien présente sur la VM (dans ~/.ssh/authorized_keys
) et que vous disposez de la clé privée correspondante pour l’authentification SSH.
ssh-agent bash
ssh-add ~/.ssh/id_rsa
Cela permet à Ansible d’utiliser la clé privée pour se connecter aux VMs sans intervention manuelle.
Structure du répertoire Ansible
Mon arborescence /etc/ansible/
est organisée ainsi :
/etc/ansible/
├── ansible.cfg
├── inventory.ini
├── playbook/
│ ├── config-vm-linux.yml
│ └── rh-config-vm-linux.yml
├── roles/
│ ├── install-package/
│ ├── modif-dns/
│ └── red-hat-install-package/
└── vault1.yml
ansible.cfg : Fichier de configuration principale d’Ansible.
inventory.ini : Liste des hôtes (ici, les VMs Proxmox) et leurs IPs.
playbook/ : Dossiers contenant les playbooks à exécuter.
roles/ : Dossiers de rôles Ansible pour modulariser les tâches (installation de paquets, modification DNS, etc.).
vault1.yml : Variables ou secrets chiffrés avec Ansible Vault.
Exemple d’inventaire pour VMs
Dans inventory.ini
:
[kvm_node]
192.168.1.10 ansible_user=ssh_user ansible_connection=ssh
192.168.1.11 ansible_user=ssh_user ansible_connection=ssh
192.168.1.12 ansible_user=ssh_user ansible_connection=ssh
192.168.1.9 ansible_user=ssh_user ansible_connection=ssh
Initialisation et utilisation des rôles
Pour initialiser un nouveau rôle :
cd /etc/ansible/roles
ansible-galaxy init nom_du_role
Cela crée la structure standard du rôle (tasks, handlers, vars, templates, etc.)
Exemple
imad@ansible:/etc/ansible/roles$ ls -1 install-package/
defaults
files
handlers
meta
README.md
tasks
templates
tests
vars
cat /etc/ansible/roles/install-package/tasks/main.yml
---
# role pour installation
- name: Mettre à jour le cache des paquets
ansible.builtin.apt:
update_cache: true
become: true
- name: Installer les paquets nécessaires
ansible.builtin.apt:
name:
- git
- vim
- openssh-server
- curl
- net-tools
- dnsutils
- sudo
- unzip
- nfs-client
state: present
become: true
Exemple de playbook utilisant des rôles
Dans /etc/ansible/playbook/config-vm-linux.yml
:
---
- name: Configuration des VMs Proxmox
hosts: proxmox_vms
become: yes
roles:
- install-package
Ce playbook applique le rôle install-package
à toutes les VMs listées dans le groupe kvm_nodes
.
Vault
Ansible Vault : Sécuriser les credentials avec chiffrement et déchiffrement
Création d’un fichier Vault
Pour créer un fichier chiffré contenant vos secrets :
ansible-vault create vault.yml
Cette commande ouvre votre éditeur de texte (défini par la variable d’environnement
EDITOR
).Saisissez vos variables sensibles, puis enregistrez et fermez : le fichier sera chiffré.
Édition d’un fichier Vault
Pour modifier un fichier Vault existant :
ansible-vault edit vault.yml
Le fichier est déchiffré temporairement dans l’éditeur, puis rechiffré à la fermeture.
Chiffrer un fichier existant
Pour chiffrer un fichier déjà existant (non chiffré) :
ansible-vault encrypt fichier.yml
Déchiffrer un fichier Vault
Pour déchiffrer définitivement un fichier Vault (le rendre lisible en clair) :
ansible-vault decrypt vault.yml
Exécution du playbook
Assurez vous d’être dans un shell où votre clé privée est chargée avec ssh-agent
, puis lancez :
ansible-playbook -i inventory.ini playbook/config-vm-linux.yml
Ansible utilisera la clé privée via l’agent SSH pour se connecter aux VMs et exécuter les rôles définis
Utilisation dans les playbooks
Ansible détecte automatiquement les fichiers Vault lors de l’exécution d’un playbook. Pour fournir le mot de passe Vault :
Saisie interactive :
ansible-playbook playbook/config-vm-linux.yml --ask-vault-pass
Last updated
Was this helpful?