Ansible-3 Configuration des hosts ⚙️

Objectifs:
🎯 configurer le ssh des hosts.
🎯 pouvoir utiliser des modules ansibles sur nos serveurs docker.

Prérequis:
💡 connaître ubuntu, windows.
💡 connaître docker.


logo d'ansible, outil devops d'autimatisation de deploiement d'application et de configurations.

Dans ce chapitre nous allons créer 2 serveurs docker.
Pour ensuite les configurer, dans le but de pouvoir les utiliser dans des playbooks ansible.

Schema d'infra du déploiement réalisé lors du chapitre. Je n'ai aucun docker d'actif en ce début de chapitre.
Faire attention au user utilisé lors des commandes (ansible)

sudo docker ps;


Résultat de la commande docker ps.

1) Créer et s'attacher au server1

sudo docker run -it --name=server1 -h=server1 ubuntu bash;


Résultat de la commande de création du container docker server1.

2) Créer le user ansible.

apt-get update;
apt-get install sudo;
adduser ansible;
usermod -aG sudo ansible;

3) Installer openssh avec le user ansible.

su - ansible;
sudo apt-get install openssh-server vim -y;
sudo service ssh start;


Résultat de la commande de start de ssh.

4) Se déconnecter de server1.

Press 'Ctrl+P' then 'Ctrl+Q'

5) Suivre le même process pour le server2.
Vous devez au final avoir 2 conteneurs.

sudo docker ps


Résultat de la commande docker ps.

6) Ajouter les IP de vos conteneurs dans /etc/hosts.
Mettre les commandes suivantes dans un script bash à exécuter en sudo

echo "$(sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' server1) server1" >> /etc/hosts;
echo "$(sudo docker inspect -f '{{ .NetworkSettings.IPAddress }}' server2) server2" >> /etc/hosts;


Define server1 and server2 in sys hosts.

7) Créer une paire de clés ssh.

ssh-keygen -o -t rsa -C "ansible";

* Vous pouvez laisser les champs vides dans le cadre de cet exemple.
* La paraphrase permet d'ajouter un mot de passe avec l'utilisation des clés.

8) Ajouter les clé publiques des serveurs dans ~/.ssh/known_hosts

ssh-keyscan -t rsa server1 >> ~/.ssh/known_hosts;
ssh-keyscan -t rsa server2 >> ~/.ssh/known_hosts;

* Cette commande est équivalent à repondre oui à la demande de fingerprint lors d'une première connexion ssh.
* Dans known_hosts vous pourrez retrouver le hostname de vos serveurs suivit de leur clé publique.

9) Rajouter la clé publique de la machine hôte dans ~/.ssh/authorized_keys des serveurs.

ssh-copy-id ansible@server1;
ssh-copy-id ansible@server2;


Result of ssh copy command.

* Cette commande est équivalent à ajouter sa clé publique dans ~/.ssh/authorized_keys d'une machine.
* Dans authorized_keys de chacun de vos serveurs vous pourrez retrouver la clé publique de votre machine hôte.

10) Créer un fichier ~/.ansible.cfg

vim ~/.ansible.cfg;


Ansible configuration file.

* Cela permet de définir un chemin pour nos roles et inventaire et autres.
* Plus de détails dans le chapitre suivant ici c'est l'inventaire qui nous interesse.

11) Configurer l'inventaire ansible

vim hosts;


Ansible hosts configuration file.

* Cela permet de déclarer les server1 et server2 dans un groupe docker.
* N'oubliez pas que vous avez défini le chemin du fichier hosts dans .ancible.cfg

12) Pinger ses serveurs avec ansible

ansible -m ping docker


Result of using ping ansible module on group.

* Cela permet d'utiliser le module ansible ping pour pinger les machines du groupe docker.
* pong vert, nos serveurs répondent bien.


Conclusion:
Nous pouvons ping nos serveurs via ansible. La prochaine étape est de créer des rôles et playbooks pour mieux organiser les tâches à effectuer sur les serveurs.

Dans le chapitre Ansible-4: Création d'un playbook et d'un role. nous allons automatiser une partie de ce que nous venons d'effectuer manuellement.