L'objectif de cette étape est d'automatiser la configuration des serveurs de l'infrastructure à l'aide d'Ansible. Cela inclut l'installation des dépendances, la mise en place des services nécessaires, et la configuration des outils pour l'exécution des tâches DevOps.
Ansible est un outil d'automatisation de configuration qui permet de gérer les serveurs sans nécessiter d'agent sur ces derniers. Il fonctionne via SSH et utilise des playbooks (fichiers YAML) pour exécuter des commandes de manière déclarative.
Un projet Ansible typique est organisé comme suit :
ansible/
│── inventory.ini # Liste des serveurs à configurer
│── ansible.cfg # Configuration globale d'Ansible
│── playbooks/
│ │── setup.yml # Playbook principal
│ │── docker.yml # Installation de Docker
│ │── k8s.yml # Installation de Kubernetes
│── roles/
│ │── common/ # Rôles pour la configuration de base
│ │── monitoring/ # Rôles pour Prometheus, Grafana
L'inventaire inventory.ini définit les serveurs et leurs rôles :
[all] master ansible_host=192.168.1.100 worker1 ansible_host=192.168.1.101 worker2 ansible_host=192.168.1.102 [masters] master [workers] worker1 worker2
Le fichier ansible.cfg permet d'optimiser Ansible :
[defaults] inventory = inventory.ini remote_user = ubuntu host_key_checking = False
Le fichier playbooks/docker.yml installe Docker sur les serveurs :
- name: Installer Docker hosts: all become: true tasks: - name: Installer les paquets requis apt: name: ["apt-transport-https", "ca-certificates", "curl", "gnupg", "lsb-release"] state: present - name: Ajouter la clé GPG de Docker apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Ajouter le dépôt Docker apt_repository: repo: deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable state: present - name: Installer Docker apt: name: docker-ce state: present - name: Démarrer et activer Docker service: name: docker state: started enabled: true
Le fichier playbooks/k8s.yml installe Kubernetes sur le cluster :
- name: Installer Kubernetes hosts: all become: true tasks: - name: Ajouter la clé GPG de Kubernetes apt_key: url: https://packages.cloud.google.com/apt/doc/apt-key.gpg state: present - name: Ajouter le dépôt Kubernetes apt_repository: repo: deb http://apt.kubernetes.io/ kubernetes-xenial main state: present - name: Installer kubeadm, kubelet et kubectl apt: name: - kubeadm - kubelet - kubectl state: present - name: Démarrer kubelet service: name: kubelet state: started enabled: true
Le fichier playbooks/monitoring.yml installe et configure les outils de monitoring :
- name: Installer Prometheus et Grafana hosts: master become: true tasks: - name: Installer Prometheus apt: name: prometheus state: present - name: Installer Grafana apt: name: grafana state: present - name: Démarrer et activer les services service: name: "{{ item }}" state: started enabled: true loop: - prometheus - grafana
Les playbooks peuvent être exécutés avec la commande suivante :
ansible-playbook playbooks/docker.yml ansible-playbook playbooks/k8s.yml ansible-playbook playbooks/monitoring.yml
Une fois l'installation terminée, nous pouvons vérifier l'état des services :
systemctl status docker systemctl status kubelet systemctl status prometheus systemctl status grafana
L'utilisation d'Ansible permet de standardiser et d'automatiser l'installation et la configuration des serveurs, garantissant ainsi un déploiement reproductible et efficace de l'infrastructure.