# Ubuntu Server - Ansible & AWX

Service d'automatisation et d’ordonnancement.

# Ansible - Installation

<table id="bkmrk-difficult%C3%A9%2A-%3Cdescrip" style="border-collapse: collapse; width: 100%; height: 46.8px; border-width: 1px; border-style: hidden;"><colgroup><col style="width: 20%;"></col><col style="width: 80%;"></col></colgroup><tbody><tr style="height: 46.8px;"><td style="height: 46.8px; border: 1px groove rgb(52,73,94);">[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/PK5confirme-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/PK5confirme-png.png)  
</td><td style="height: 46.8px; border-width: 1px; background-color: rgb(236,202,250); vertical-align: top;">Difficulté : Confirmé

Notions : automation, ansible, CI/CD

</td></tr></tbody></table>

---

### <span style="color: rgb(52, 73, 94);">**<span style="text-decoration: underline;">I. Introduction</span>**</span>

Ansible est un Outil de Gestion de Configuration. Il permettra d'automatiser l'ensemble des tâches de déploiement, installation, configuration ainsi que l'ensemble des tâches courantes, qu'elles soient récurrente ou non.

---

### **<span style="text-decoration: underline;"><span style="color: rgb(52, 73, 94); text-decoration: underline;">II. Installation ansible</span>  
</span>**

#### **<span style="color: rgb(35, 111, 161);">2.1 Installer les prérequis</span>** 

#####   


Ansible se base essentiellement sur du python.

Installer '<span style="color: rgb(132,63,161);">***pipx***</span>' qui servira à installer ansible et les différents modules.

```
apt install pipx
```

intégrer ensuite les commandes pipx au commandes shell :

```
pipx ensurepath
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/qKyimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/qKyimage-png.png)

#### <span style="color: rgb(35, 111, 161);">**2.2 Installer Ansible**</span>

Pour installer Ansible, cela se fait avec pip :

```
pipx install --include-deps ansible
```

L'installation se lance.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/H0vimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/H0vimage-png.png)

A la fin de l'installation :

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/Bmqimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/Bmqimage-png.png)

---

### **<span style="text-decoration: underline;"><span style="color: rgb(52, 73, 94); text-decoration: underline;">III. Préparer la connexion aux clients</span>  
</span>**

#### **<span style="color: rgb(35, 111, 161);">3.1 Créer le compte ansible</span>** 

Ansible, par défaut, se connectera en SSH aux clients.

Il faut donc créer un compte ansible pour la connexion SSH ainsi que ses clé. Puis il faudra ensuite pousser les clés sur l'ensemble des clients (à minima linux).

Créer l'utilisateur :

```
useradd -b /bin/bash -d /home/ansible -m ansible
```

Puis se connecter en tant que l'utilisateur ansible :

```
su ansible
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/CKoimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/CKoimage-png.png)

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/nM5image-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/nM5image-png.png)

aller dans le répertoire home avec '<span style="color: rgb(132,63,161);">***cd***</span>'.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/L1Mimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/L1Mimage-png.png)

#### **<span style="color: rgb(35, 111, 161);">3.2 Créer les clés SSH</span>** 

Pour se connecter aux machine distantes, il faudra créer les clé SSH pour le compte ansible.

en tant que l'utilisateur ansible, lancer la commande suivante :

```
ssh-keygen -t rsa -b 4096 -C "SSH key For ansible automation account"
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/CRbimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/CRbimage-png.png)

Il faudra ensuite afficher la clé publique pour la partager aux autres machines.

```
cat .ssh/id_rsa.pub
```

Et copier/stocker le résultat de la commande dans un vault.

<details id="bkmrk-installation-de-la-c"><summary>Installation de la clé publique sur les clients</summary>

Sur les clients, il faudra tout d'abord créer le compte ansible et l'ajouter aux sudoers.

```
useradd -b /bin/bash -d /home/ansible -m -G sudo ansible
```

<p class="callout warning">**Attention** : Si l'instance SSH a été configurée sur les clients pour autoriser la connexion à un groupe particulier, il faut également ajouter le user ansible au groupe SSH.</p>

```
useradd -b /bin/bash -d /home/ansible -m -G sudo,<groupessh> ansible
```

Pour installer la clé sur les clients, utiliser la commande :

```
su <utilisateur ansible>
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
echo '<clé publique précédement copiée>' >> ~/.ssh/authorized_keys
```

Pour vérifier la présence de la clé :

```
su <utilisateur ansible>
cat ~/.ssh/authorized_keys
```

Il faudra également lui définir un mot de passe pour qu'il puisse utiliser le sudo.

```
passwd ansible
```

Ensuite, depuis la machine de contrôle ansible, connecter en ssh :

```
su ansible
ssh ansible@<FQDN>
```

</details>#### **<span style="color: rgb(35, 111, 161);">3.3 Lancer l'agent SSH</span>** 

Afin de ne pas avoir à retaper la clé ssh à chaque fois, lancer le ssh agent qui se chargera de placer les informations en cache et valider les connexions. Pour lancer l'agent :

```
eval $(ssh-agent -s)
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/Kaiimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/Kaiimage-png.png)

<p class="callout success">**ASTUCE** : Pour que l'agent se lance au démarrage système, ajouter cette commande dans le fichier '<span style="color: rgb(132,63,161);">***~/.bashrc***</span>' de l'utilisateur.</p>

Puis ajouter l'identité SSH à l'agent avec :

```
ssh-add ~/.ssh/id_rsa
```

et retaper le mot de passe de la clé.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/ODTimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/ODTimage-png.png)

Ansible est maintenant lancé, et prêt à se connecter aux clients.

Pour tester la connexion aux machines, on peut créer un premier inventaire et utiliser la commande :

```
ansible all --inventory <chemin/vers/inventaire> -m ping
```

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/hysimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/hysimage-png.png)

---

### **<span style="text-decoration: underline;"><span style="color: rgb(52, 73, 94); text-decoration: underline;">IV. Configurer ansible</span>  
</span>**

#### **<span style="color: rgb(35, 111, 161);">4.1 Modifier la configuration</span>** 

Le fichier de configuration par défaut d'Ansible est situé dans '<span style="color: rgb(132,63,161);">***/etc/ansible/ansible.cfg***</span>'

Il permet d'attribuer un comportement par défaut pour ansible.

Il pourra être ensuite overrided par un fichier '<span style="color: rgb(132,63,161);">***ansible.cfg***</span>' présent dans le playbook.

<p class="callout info">**Informations** : voir ***[ici](https://docs.ansible.com/ansible/latest/reference_appendices/config.html)*** pour les paramètres possibles dans le fichier de configuration.</p>

#### **<span style="color: rgb(52, 73, 94);">4.2 Lier au gitlab</span>** 

<p class="callout danger">**Prérequis :** il faut que le compte git qui sera utilisé existe et qu'un token ai été généré et que le paquet '<span style="color: rgb(132,63,161);">***git***</span>' soit installé sur le serveur.  
</p>

Il peut être utile de se connecter à un repo git pour récupérer les playbooks dévellopés et les mettre à jour.

Pour cela, enregistrer les creds avec la commande :

```
git config --global credential.helper store
```

Cette commande permettra d'enregistrer les prochains identifiants utilisés dans le vault.

Puis faire :

```
git clone <repo url>
```

Les credentials sont alors demandés et seront enregistrés pour un usage futur.

[![image.png](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/dPOimage-png.png)](https://docs.labs404.fr/uploads/images/gallery/2026-07/scaled-1680-/dPOimage-png.png)

Pour mettre à jour les playbooks à l'avenir, il faudra se rendre dans le dossier du playbook puis faire :

```
git update
```