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 ### SSH
Avant toutes choses, vérifiez que vous avez bien configuré ssh dans `~/.ssh/config`. Pour cela, faites un tour sur Avant toutes choses, vérifiez que vous avez bien configuré ssh dans `~/.ssh/config`. Pour cela, faites un
la documentation d'[Ansible du crans](https://gitlab.crans.org/nounous/ansible) section `Configurer la connexion au vlan adm`. 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 La VM étant nouvellement configurer, il n'est possible de se ssh qu'en tant que root. Ainsi, il est
copiez votre clé SSH (public) sur le compte root : `ssh-copy-id root@[nom_serveur].adm.crans.org` 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. > - À noter : il faut autoriser les connexions ssh en root et interdisez cela dès que cela est fait.
### Installation d'Ansible ### Installation d'Ansible
Installez Ansible sur votre machine ainsi que `python3-ldap`. En effet, Ansible permet la gestion de toutes les VM Installez Ansible sur votre machine ainsi que `python3-ldap`. En effet, Ansible permet la gestion de toutes
depuis son ordinateur. 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 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. 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 ### Configuration minimale
Cela correspond à la base de toutes les VM du crans. Cela inclut de permettre la connexion ssh par les nounous Cela correspond à la base de toutes les VM du crans. Cela inclut de permettre la connexion ssh par les
notamment. 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 : Enfin, il faut rendre le LDAP accessible à votre machine :
```bash ```bash
@ -177,8 +181,8 @@ 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).
Il se peut qu'une erreur persiste. En effet, avec `--check` aucune modification n'est appliquée. Donc, si une commande Il se peut qu'une erreur persiste. En effet, avec `--check` aucune modification n'est appliquée. Donc, si
nécessite au préalable qu'une autre ait eu lieu, une erreur peut se produire. une commande nécessite au préalable qu'une autre ait eu lieu, une erreur peut se produire.
### Configurer un service ### 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. > - `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 Dans `all.yml`, ajoutez un playbook (au nom du service pour l'identifier plus facilement) et créez un fichie
même nom dans `plays` (inspirez-vous d'un autre fichier librement car la nomenclature sera similaire). 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 : Le fichier dans `plays` contient 4 éléments essentiels :
> - l'en-tête `#!/usr/bin/env ansible-playbook` > - l'en-tête `#!/usr/bin/env ansible-playbook`
> - une petite note explicative (parfois un œuf de Pâques...) > - 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 > - `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`. > 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, > - `roles:` qui contiendra la (ou les) configuration des services qui seront hébergés sur la VM.
> il s'agira simplement du nom du service qui sera hébergé. > 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 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
ajouté). Chacun de ces dossiers contient 2 autres dossiers : 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 > - `templates` qui contiendra tous les fichiers qui devront être copier sur la machine. Typiquement des
> de configuration comme pour `nginx` ou le `motd`. À noter que les `templates` peuvent contenir des variables > fichiers de configuration comme pour `nginx` ou le `motd`. À noter que les `templates` peuvent contenir
> sous la forme `{{ nom_de_la_variable }}`, qui sera remplacée au moment de l'exécution d'Ansible. Ces noms de variables sont > des variables sous la forme `{{ nom_de_la_variable }}`, qui sera remplacée au moment de l'exécution
> généralement enregistrés dans `group_vars/[nom_service].yml`. Si la variable est un secret, il faut alors l'ajouter > d'Ansible. Ces noms de variables sont généralement enregistrés dans `group_vars/[nom_service].yml`. Si
> dans le pass et écrire `{{ vault.fichier.secret }}`. Les `templates` sont facultatifs si jamais utilisés. > la variable est un secret, il faut alors l'ajouter dans le pass et écrire `{{ vault.fichier.secret }}`.
> - `tasks` dont le fichier `main.yml` sera automatiquement exécuté. Il contient toutes les commandes à exécuter > Les `templates` sont facultatifs si jamais utilisés.
> pour rendre le service opérationnel. De même que pour `templates`, il est possible d'utiliser des variables. > - `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. Une fois la configuration terminée, pensez à push les modifications sur le git Ansible.