Automatisation de l’Infrastructure avec Vagrant et Ansible Part 1.1

Vitualbox
Vitualbox

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

powershell 7.4
powershell 7.4
ansible introduction
ansible introduction
Vitualbox
Vitualbox
Vagrant
Vagrant

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

powershell 7.4

# 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

Vagrant

#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

Vitualbox

# 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

ansible introduction

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) :

  1. 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.
  2. 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.
  3. 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 virtuelvagrant@ubuntu-focal:~$ python3 -m venv .venv --prompt A 

# Activation de l'environnement virtuelvagrant@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

Automation Experts

Rejoignez-nous pour une newsletter exclusive sur l'automatisation des experts informatique !

Obtenez les dernières tendances, astuces et outils pour optimiser vos processus, accélérer vos projets et libérer tout le potentiel de l'automatisation dans le monde de la technologie. Abonnez-vous dès maintenant pour rester à la pointe de l'innovation et transformer votre manière de travailler."

Comments

No comments yet. Why don’t you start the discussion?

    Alors tu en pense quoi de cette article ? Dis-moi tous..