texinfo
korenstin 2024-08-13 13:19:40 +02:00
parent 06e028d3b3
commit 43766e30b0
1 changed files with 31 additions and 25 deletions

View File

@ -134,18 +134,20 @@ Pour faciliter le déploiement des VM, le Crans opte pour l'utilisation d'Ansibl
### 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`.
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`
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.
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.
@ -154,12 +156,14 @@ 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.
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]`).
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`).
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
@ -177,8 +181,8 @@ sans le `--check`.
Plus d'info sur Ansible dans son
[guide dédier](https://gitlab.crans.org/nounous/ansible).
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.
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
@ -186,26 +190,28 @@ Tout d'abord, ajoutez le serveur dans `group_vars/reverseproxy.yml` dans la part
> - `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).
Dans `all.yml`, ajoutez un playbook (au nom du service pour l'identifier plus facilement) et créez un fichie
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é.
> - `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 :
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.
> - `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.