Ajout configuration avec Ansible

texinfo
korenstin 2024-08-13 13:07:56 +02:00
parent 65ea6170a5
commit 06e028d3b3
1 changed files with 66 additions and 7 deletions

View File

@ -130,11 +130,41 @@ via la terminal disponible sur Proxmox (`~/.ssh/authorized_keys`)
## Setup initial de la VM ## Setup initial de la VM
Installez Ansible sur votre machine. Pour faciliter le déploiement des VM, le Crans opte pour l'utilisation d'Ansible.
Téléchargez le dépôt git avec les fichiers Ansible du Crans.
[dépôt git](https://gitlab.crans.org/nounous/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. 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 Plus d'info sur Ansible dans son
[guide dédier](https://gitlab.crans.org/nounous/ansible). [guide dédier](https://gitlab.crans.org/nounous/ansible).
```bash Il se peut qu'une erreur persiste. En effet, avec `--check` aucune modification n'est appliquée. Donc, si une commande
plays/root.yml -l [machine a déployer].adm.crans.org --extra-vars='ansible_become_user=root' -u root 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.