Imad’s wiki
GithubLinkedInXMailHashnode
  • ADMINISTRATION LINUX
    • Linux et ses distributions
    • Commandes Utiles
    • Gestion des paquets
    • SSH
    • Partitionnement LVM
  • Base de données
    • PostgreSQL
      • Quelques commandes Postgres
      • Mise à jour de Postgresql sous windows
  • Tutoriels
    • Securité
      • Wazuh
      • Intégration Debian sur Active Directory
      • Certificat SSL
    • SingleSignOn
      • Authentik
      • SAML + CENTREON
      • OpenID + Apache Guacamole
      • OpenID + Proxmox
    • Git
      • Git
    • Infra-As-Code
      • Terraform + Proxmox
      • Ansible
    • Conteneurisation
      • Docker
        • Quelques commandes Docker utiles
Powered by GitBook
On this page
  • Préparation de l’environnement SSH
  • Structure du répertoire Ansible
  • Exemple d’inventaire pour VMs
  • Initialisation et utilisation des rôles
  • Exemple de playbook utilisant des rôles
  • Vault
  • Exécution du playbook
  • Utilisation dans les playbooks

Was this helpful?

  1. Tutoriels
  2. Infra-As-Code

Ansible

PreviousTerraform + ProxmoxNextConteneurisation

Last updated 5 days ago

Was this helpful?

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 )

D'autres playbook et role ansible dispo sur mon

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 

Ce rôle permet la mise à jour de la liste locale des paquets et l'installation de paquets

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

Ansible Vault permet de chiffrer (encrypt) et déchiffrer (decrypt) des fichiers ou des variables sensibles utilisés dans vos playbooks Ansible, comme des mots de passe, des clés API ou toute donnée confidentielle. Vault utilise le chiffrement AES256 et fonctionne avec un mot de passe unique pour chiffrer et déchiffrer les contenus.

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

Le fichier sera remplacé par sa version chiffrée.

Le fichier sera remplacé par sa version déchiffrée, non protégée.

4
5
1
2
repo
ici