Introduction
L’automatisation de l’infrastructure est une étape essentielle dans le domaine de la gestion des systèmes et du déploiement d’applications. Dans cet article, nous allons explorer les étapes pour configurer un environnement de développement local en utilisant Vagrant et automatiser la gestion des configurations avec Ansible.
Si vous souhaitez en savoir plus sur ansible, je vous recommande de commencer par ici
Partie 1: Mise en place de l’environnement




1.1 Installation de Vagrant et VirtualBox sur Windows avec PowerShell 7.4
1.2 Configuration de Vagrant et création d’une machine virtuelle Ubuntu

# Création d'un dossier pour le projet Ansible
#Deplacement dans le document de votre utilisateur
PS C:\Users\Devops> cd ~\Documents\
PS C:\Users\Devops> Mkdir Ansible
PS C:\Users\Devops>Cd Ansible
#Creation de notre machine virtuel ubuntu Il sera détaillé dans le prochain article
PS C:\Users\Devops\Ansible> Vagrant init ubuntu/focal64
PS C:\Users\Devops\Ansible> Vagrant up
PS C:\Users\Devops\Ansible> Vagrant ssh
Partie 2: Installation d’Ansible sur la machine virtuelle
2.1 Installation sur la machine virtuelle Ubuntu

#Mise à jour du système
vagrant@ubuntu-focal:~$ sudo apt-get update
#Installation des composant d'Ansible
vagrant@ubuntu-focal:~$ sudo apt-get install python3-pip git libffi-dev libssl-dev -y
#Installation d'Ansible
vagrant@ubuntu-focal:~$ pip3 install --user ansible
# Ajout des commandes Ansible au bash
vagrant@ubuntu-focal:~$ export PATH=$PATH:~/.local/bin
vagrant@ubuntu-focal:~$ source ~/.bashrc
2.2 Configuration d’un inventaire de serveurs

# Création d'un répertoire pour l'inventaire
vagrant@ubuntu-focal:~$ mkdir inventory
# Configuration de l'inventaire dans serveur.ini
vagrant@ubuntu-focal:~$ vim inventory/serveur.ini
Contenu de serveur.ini
:
[webservers] testserver
[webservers:vars]
ansible_port=22
ansible_host=localhost
ansible_user=vagrant
ansible_private_key_file=~/.ssh/id_rsa
Partie 3: Premier script Ansible
3.1 Configuration d’Ansible.cfg pour un premier inventaire par défaut
# Configuration d'Ansible.cfg
vagrant@ubuntu-focal:~$ vim ansible.cfg
Contenu de ansible.cfg
:
[defaults]
inventory = ~/inventory/serveur.ini
host_key_checking = true
stdout_callback = yaml
callback_enabled = timer
3.2 Exécution de commandes et installation de packages
# Test de la connexion à la machine
ansible testserver -m ping
# Installation de Nginx ansible testserver -b -m package -a "name=nginx"
# Redémarrage de Nginx ansible testserver -b -m service -a "name=nginx state=restarted"
Partie 4: Debugg
4.1 /home/vagrant/.ssh/id_rsa: No such file or directory
N’ayant pas créer de clé ssh pour permettre à Ansible de ce connecter, nous avons cette erreur

testserver | UNREACHABLE! => {
« changed »: false,
« msg »: « Failed to connect to the host via ssh: no such identity: /home/vagrant/.ssh/id_rsa: No such file or directory\r\nvagrant@localhost: Permission denied (publickey). »,
« unreachable »: true
}
Pour éviter cette erreur, nous allons créer notre clé ssh :
vagrant@ubuntu-focal:~$ ssh-keygen -b 4096 -t rsa
Il vous poserons une série de question, faite entrer jusqu’à ce que vous aillez plus de question
4.1 Permission denied (publickey)
Pour se connecter à un serveur distant via ssh, il faut que notre clé public soit à l’emplacement .ssh/authorized_keys. Ansible, utilisant ssh, a besoin que votre clé publique soit dans le fichier authorized_keys sinon nous n »aurions pas cette erreur
testserver | UNREACHABLE! => {
« changed »: false,
« msg »: « Failed to connect to the host via ssh: vagrant@localhost: Permission denied (publickey). »,
« unreachable »: true
}
# Génération de la clé SSH et ajout aux autorisations
vagrant@ubuntu-focal:~$ touch .ssh/authorized_keys
vagrant@ubuntu-focal:~$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
Vous pouvez essayer de nouveau de faire les commandes de la parti 3.2
4.1 Les couleurs
- Le texte écrit en rouge signifie qu »il y a un problème sur l’exécution et qu’il n’a pas pu s’exécuter correctement ou en totalité
- Le texte écrit en verte signifie qu »il y a eu aucun problème sur l’exécution et qu’il s’est exécuter correctement en totalité
- Le texte écrit en jaune orangé signifie qu »il y a un problème sur l’exécution et qu’il y a eu une/plusieurs exécution correctement qui a changé l’état de la machine
- Le texte écrit en Bleu indique des changements délibérés ou des mises à jour qui ont été appliquées pendant l’exécution d’une tâche. (Exemple avec le mode verbose: ansible testserver -b -m service -a « name=nginx state=restarted » -vvvvvvvv)
Partie 5: Création d’un environnement virtuel Python (bonus)
Création et activation de l’environnement virtuel
Un environnement virtuel (venv) et un environnement normal (ou système) sont deux concepts différents en programmation et en développement logiciel. Voici les principales différences entre les deux :
Environnement Virtuel (venv) :
- Isolation des Dépendances :
- Un environnement virtuel permet d’isoler les dépendances (nouvelle versions python pour ansible) d’un projet spécifique. Cela signifie que vous pouvez avoir différentes versions de packages installées pour différents projets sans qu’ils n’interfèrent les uns avec les autres.
- Portabilité :
- Un environnement virtuel est portable, ce qui signifie qu’il peut être facilement partagé ou déplacé entre différentes machines. Cela garantit que les dépendances spécifiques à un projet sont préservées lors du partage du code.
- Gestion des Versions de Python :
- Vous pouvez spécifier la version de Python à utiliser pour votre projet en créant un environnement virtuel. Cela permet de maintenir la cohérence entre les versions de Python utilisées dans différents projets.
#Installation
vagrant@ubuntu-focal:~$ sudo apt install python3.8-venv
# Création de l'environnement virtuel
vagrant@ubuntu-focal:~$ python3 -m venv .venv --prompt A
# Activation de l'environnement virtuel
vagrant@ubuntu-focal:~$ source .venv/bin/activate
# Pour quitter l'environnement virtuel
(A) vagrant@ubuntu-focal:~$ deactivate
# Pour quitter la machine virtuelle
vagrant@ubuntu-focal:~$ exit
Conclusion
Dans cet article, nous avons couvert les bases de l’automatisation de l’infrastructure en utilisant Vagrant et Ansible. Vous avez maintenant un environnement de développement local configuré et la capacité d’automatiser des tâches sur vos machines virtuelles avec Ansible. Ce n’est qu’un début ; explorez davantage pour optimiser votre flux de travail et gagner en efficacité dans la gestion de votre infrastructure.
Inspirer du livre ANSIBLE Up & Running