From 06e028d3b3f9e88493e3c84851c8742da5f9f4c3 Mon Sep 17 00:00:00 2001 From: korenstin Date: Tue, 13 Aug 2024 13:07:56 +0200 Subject: [PATCH] Ajout configuration avec Ansible --- howto/creer_vm_crans.md | 73 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 66 insertions(+), 7 deletions(-) diff --git a/howto/creer_vm_crans.md b/howto/creer_vm_crans.md index 45943b0..aaabbd0 100644 --- a/howto/creer_vm_crans.md +++ b/howto/creer_vm_crans.md @@ -130,11 +130,41 @@ via la terminal disponible sur Proxmox (`~/.ssh/authorized_keys`) ## Setup initial de la VM -Installez Ansible sur votre machine. -Téléchargez le dépôt git avec les fichiers Ansible du Crans. -[dépôt git](https://gitlab.crans.org/nounous/ansible) +Pour faciliter le déploiement des VM, le Crans opte pour l'utilisation d'Ansible. -Copiez votre clé SSH (public) sur le compte root. +### SSH + +Avant toutes choses, vérifiez que vous avez bien configuré ssh dans `~/.ssh/config`. Pour cela, faites un tour sur +la documentation d'[Ansible du crans](https://gitlab.crans.org/nounous/ansible) section `Configurer la connexion au vlan adm`. + +La VM étant nouvellement configurer, il n'est possible de se ssh qu'en tant que root. Ainsi, il est nécessaire de +copiez votre clé SSH (public) sur le compte root : `ssh-copy-id root@[nom_serveur].adm.crans.org` + +> - À noter : il faut autoriser les connexions ssh en root et interdisez cela dès que cela est fait. + +### Installation d'Ansible + +Installez Ansible sur votre machine ainsi que `python3-ldap`. En effet, Ansible permet la gestion de toutes les VM +depuis son ordinateur. + +Téléchargez le [dépôt git](https://gitlab.crans.org/nounous/ansible) avec les fichiers Ansible du Crans qui +contiennent la configuration de tout les serveurs du Crans. + +Il faut alors ajouter la VM nouvellement créer dans Ansible. + +### Configuration minimale + +Cela correspond à la base de toutes les VM du crans. Cela inclut de permettre la connexion ssh par les nounous +notamment. + +Pour cela, il faut ajouter la VM dans `hosts` dans la catégorie correspondante (généralement dans `[crans_vm]`). + +Ensuite, ajoutez un fichier `host_vars/[serveur].adm.crans.org` contenant la configuration réseau (`interfaces`). + +Enfin, il faut rendre le LDAP accessible à votre machine : +```bash +ssh -L 1636:wall-e.adm.crans.org:636 wall-e.adm.crans.org +``` Vérifiez que votre config n'a pas de problème. @@ -147,6 +177,35 @@ sans le `--check`. Plus d'info sur Ansible dans son [guide dédier](https://gitlab.crans.org/nounous/ansible). -```bash -plays/root.yml -l [machine a déployer].adm.crans.org --extra-vars='ansible_become_user=root' -u root -``` +Il se peut qu'une erreur persiste. En effet, avec `--check` aucune modification n'est appliquée. Donc, si une commande +nécessite au préalable qu'une autre ait eu lieu, une erreur peut se produire. + +### Configurer un service + +Tout d'abord, ajoutez le serveur dans `group_vars/reverseproxy.yml` dans la partie `reverseproxy_sites`. + +> - `reverseproxy.yml` contient le nom avec lequel le service sera accessible. + +Dans `all.yml`, ajoutez un playbook (au nom du service pour l'identifier plus facilement) et créez un fichier du +même nom dans `plays` (inspirez-vous d'un autre fichier librement car la nomenclature sera similaire). + +Le fichier dans `plays` contient 4 éléments essentiels : +> - l'en-tête `#!/usr/bin/env ansible-playbook` +> - une petite note explicative (parfois un œuf de Pâques...) +> - `hosts:` qui correspond à la VM ou groupe de VM pour lequel le script doit s'appliquer (la VM doit être +> déclarer dans le fichier `hosts`). Généralement, il s'agira de `[nom_vm].adm.crans.org`. +> - `roles:` qui contiendra la (ou les) configuration des services qui seront hébergés sur la VM. Généralement, +> il s'agira simplement du nom du service qui sera hébergé. + +Une fois les rôles créés, il faut créer un dossier du même nom dans le dossier `roles` (pour chaque rôle précédemment +ajouté). Chacun de ces dossiers contient 2 autres dossiers : + +> - `templates` qui contiendra tous les fichiers qui devront être copier sur la machine. Typiquement des fichiers +> de configuration comme pour `nginx` ou le `motd`. À noter que les `templates` peuvent contenir des variables +> sous la forme `{{ nom_de_la_variable }}`, qui sera remplacée au moment de l'exécution d'Ansible. Ces noms de variables sont +> généralement enregistrés dans `group_vars/[nom_service].yml`. Si la variable est un secret, il faut alors l'ajouter +> dans le pass et écrire `{{ vault.fichier.secret }}`. Les `templates` sont facultatifs si jamais utilisés. +> - `tasks` dont le fichier `main.yml` sera automatiquement exécuté. Il contient toutes les commandes à exécuter +> pour rendre le service opérationnel. De même que pour `templates`, il est possible d'utiliser des variables. + +Une fois la configuration terminée, pensez à push les modifications sur le git Ansible.