nouvelle config Ansible

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 exemple server ou agent.

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 — version 8.2.1 disponible.
  • kubernetes.core — version 3.2.0 disponible.

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.

Retour en haut