A force d'automatiser j'ai maintenant des squelettes de playbooks , de rôles voir même de collections ansible.
Le plus souvent j'utilise le rôle Docker (avec docker-compose ) dés l'installation d'une nouvelle machine , je vous propose ici de suivre l'installation de ce serveur avec OVH avec sa première customisation.
On pourrait ici utiliser Terraform pour le faire , mais vu que c'est un usage personnel , je ne m'amuse pas à installer/supprimer mes serveurs très souvent , du coup je passe par une installation via le manager d'OVH.
Je vous laisse le soin de créér votre serveur, l'important ici c'est de récupérer les infos de première connexion. Si tout se passe bien vous devriez recevoir un mail d'OVH avec vos identifiants de connexion
Votre VPS vient d'être installé sous le système d'exploitation / distribution
Debian 11
PARAMETRES D'ACCES:
L'adresse IPv4 du VPS est : <ip>
Le nom du VPS est : <nom vps>
Le compte administrateur suivant a été configuré sur le VPS :
Nom d'utilisateur : <user>
Mot de passe : <passwd>
c'est bon on a tout ce qu'il faut pour se connecter au serveur
On part du principe qu'Ansible est déjà installé et que vous avez au moins une configuration de base qui vous permette de lancer un playbook ou une commande Ad-hoc
Dans la configuration de mon ficher Ansible j'ai au moins ces keys définies:
roles_path = /path-to-ansible-project/ansible_skeleton/roles/host_key_checking = Falseansible_python_interpreter = /usr/bin/python3remote_user = kairel
On le verra peut-être dans un autre article mais j'utilise souvent les surcharges dans Ansible, et notemment ici pour la configuration, Ansible prendra en priorité la configuration du fichier du répertoire courant :)
Dans mon projet j'ai donc cette structure:
et si on regarde plus en détail :
Comme on peut le voir tout le code et donc les tâches sont dans les rôles.
On créera le rôle tout à l'heure , ici c'est juste pour montrer l'arborescence cible .
On va maintenant ajouter notre serveur à l'inventaire de ansible .
On édite le fichier production à la racine de notre projet ( on l'appel comme on veut ,je donne des noms d'environnements exprès pour isoler les serveurs)
[new_server]
<IP> ansible_user=<user> ansible_password=<passwd>
[kairel]
kairel.fr
Ici vous reprenez les informations reçues dans votre mail OVH de création de serveur
Par défaut on évite de configurer ansible pour qu'il se connecte via un user/password mais pour débuter et pour une 1ère connexion ça ira très bien
On peut déja tester si notre configuration est opérationnelle via une commande Ad hoc :
Si vous avez une erreur , il est possible que ce soit parce que le programme sshpass n'est pas installé .
Ici on a finis la configuration d'ansible
Le but de ce post n'étant pas de vous expliquer comment fonctionne Ansible , je vais juste vous mettre mon playbook et mon rôle docker avec un peu d'explications
Explications:
Ici j'appelle le host défini plus haut (new_server) sur lequel je viens appliquer des roles (dans ces roles se trouvent les tâches à éxécuter)
Je set la variable (en vrai on fera plutôt ça avec des tags) install à true on verra aprés pourquoi
Je ne mets pas tous les roles que j'utilise , je laisse uniquement ceux qui nous intéressent
On va dans le répertoire roles/, on crée un répertoire common et 3 sous-répertoires templates, tasks et vars , de façon a avoir cette structure:
pas la peine de reprendre tous les fichiers on va se concentrer sur celui des tâches
On retrouve ici la variable install , elle va nous permettre d'appeler un fichier différent en fonction de l'action que l'on veut faire, par exemple dans ce rôle je mets aussi à jour les clés ssh , j'ai donc une variable update etc ...
Je vous passe tout ce que cela fait , mais je customise mon serveur en :
Dans le repertoire vars un fichier main avec la définition des variables (j'utilise ansible vault je ne peux donc pas vous donnez le ficher exact, il faudra l'adapter)
Dans le répertoire Templates , ce sont les fichiers .j2 comme par exemple le fichier user.sudoers.j2
dans le répertoire roles , créer la structure comme ci-dessous
Le fichier main.yml (dans tasks)
Le fichier main.yml dans vars
Le fichier docker.j2 dans templates/logrotate
Une fois le rôle prêt , il suffit de lancer le playbook, d'abord avec un "--check", pour valider que tout est ok
ansible-playbook -i production playbooks/common/new_server.yml --check
Si tout est ok la même sans le "--check"
et logiquement votre nouveau serveur docker est installé , enjoy