Configuration Ansible
Ansible permet d’automatiser la configuration et le déploiement des applications sur les instances EC2 du projet AWS.
Organisation des fichiers
Le répertoire ansible/ contient les éléments suivants :
ansible/
├── ansible.cfg
├── aws_ec2.yml
├── playbooks/
│ ├── install_agents.yml
│ └── wordpress.yml
└── roles/
└── wordpress/
├── handlers/
│ └── main.yml
├── tasks/
│ └── main.yml
├── templates/
│ ├── cadvisor-daemonset.yaml.j2
│ └── wordpress-deployment.yaml.j2
└── vars/
└── main.yml
Configuration générale
Le fichier ansible.cfg définit les paramètres utilisés par Ansible :
- Inventaire :
aws_ec2.yml - Rôles : répertoire
./roles - Clé SSH :
~/.ssh/id_rsa - Utilisateur distant :
ubuntu - Vérification des clés d’hôte : désactivée (
host_key_checking = False)
Inventaire dynamique AWS
Le fichier aws_ec2.yml utilise le plugin amazon.aws.aws_ec2 pour récupérer automatiquement les instances EC2 de la région eu-central-1.
Il filtre les instances dont l’état est running, puis crée des groupes Ansible à partir de leurs tags AWS :
tag_Name: groupe basé sur le nom de l’instance.tag_k3s_role: groupe basé sur le rôle Kubernetes, par exempleserverouagent.
Cet inventaire évite de maintenir manuellement la liste des serveurs.
Playbooks et rôles
playbooks/wordpress.yml: playbook dédié au déploiement de WordPress.playbooks/install_agents.yml: playbook dédié à l’installation des agents.roles/wordpress/: contient les tâches, handlers, variables et modèles utilisés par le rôle WordPress.templates/: contient notamment les modèles Kubernetes pour WordPress et cAdvisor.
Dépendances
Les collections Ansible installées et vérifiées sur la VM locale sont :
amazon.aws— version8.2.1disponible.kubernetes.core— version3.2.0disponible.
Une ancienne version de amazon.aws (1.4.0) est également présente dans un autre emplacement de collections.
Exécution
Depuis le répertoire ansible/, l’inventaire peut être vérifié avec :
ansible-inventory -i aws_ec2.yml --graph
La connectivité SSH vers les instances doit être vérifiée avant d’exécuter les playbooks.
Dans le pipeline GitLab CI/CD, le job ansible-deploy-k3s installe les dépendances nécessaires, récupère la clé SSH depuis AWS Secrets Manager, construit l’inventaire dynamique et exécute les deux playbooks. La clé est écrite dans ~/.ssh/id_rsa avec des permissions restrictives.
Prérequis : la machine qui exécute Ansible doit disposer des accès AWS nécessaires pour interroger EC2 et d’une connectivité réseau ainsi que d’une authentification SSH permettant de joindre les instances cibles.