texinfo
korenstin 2024-08-13 13:26:46 +02:00
parent 43766e30b0
commit 07f4647637
1 changed files with 58 additions and 42 deletions

View File

@ -110,18 +110,19 @@ romanesco : ipv4 : 172.16.10.128 (DNS récursif)
hostname : le_nom_de_la machine hostname : le_nom_de_la machine
``` ```
Pour plus d'information, regardez cette [documentation](/infrastructure/reseaux/plan.md). Pour plus d'information, regardez cette
En cas de problème, il est possible de le configurer après installation dans `/etc/network/interfaces`. [documentation](/infrastructure/reseaux/plan.md).
En cas de problème, il est possible de le configurer après installation dans
`/etc/network/interfaces`.
Nom de domaine pour les machines adm : `adm.crans.org` Nom de domaine pour les machines adm : `adm.crans.org`
```config ```config
FQDN : `[nom du service].adm.crans.org` FQDN : `[nom du service].adm.crans.org`
``` ```
> - Pour le gestionnaire de paquet, il est possible d'utiliser le mirroir du > - Pour le gestionnaire de paquet, il est possible d'utiliser le mirroir du
> crans `http://mirror.adm.crans.org/debian/`. En cas de problème, il est possible > crans `http://mirror.adm.crans.org/debian/`. En cas de problème, il est
> de le configurer après installation dans `/etc/apt/sources.list`. > possible de le configurer après installation dans `/etc/apt/sources.list`.
__Installer openssh__ si pas fait dans l'installateur __Installer openssh__ si pas fait dans l'installateur
@ -130,40 +131,45 @@ via la terminal disponible sur Proxmox (`~/.ssh/authorized_keys`)
## Setup initial de la VM ## Setup initial de la VM
Pour faciliter le déploiement des VM, le Crans opte pour l'utilisation d'Ansible. Pour faciliter le déploiement des VM, le Crans opte pour l'utilisation
d'Ansible.
### SSH ### SSH
Avant toutes choses, vérifiez que vous avez bien configuré ssh dans `~/.ssh/config`. Pour cela, faites un Avant toutes choses, vérifiez que vous avez bien configuré ssh dans
tour sur la documentation d'[Ansible du crans](https://gitlab.crans.org/nounous/ansible) section `~/.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`. `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 La VM étant nouvellement configurer, il n'est possible de se ssh qu'en tant
nécessaire de copiez votre clé SSH (public) sur le compte root : que root. Ainsi, il est nécessaire de copiez votre clé SSH (public) sur le
`ssh-copy-id root@[nom_serveur].adm.crans.org` 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 Installez Ansible sur votre machine ainsi que `python3-ldap`. En effet,
les VM depuis son ordinateur. 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 Téléchargez le [dépôt git](https://gitlab.crans.org/nounous/ansible) avec les
contiennent la configuration de tout les serveurs du Crans. 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. 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 Cela correspond à la base de toutes les VM du crans. Cela inclut de permettre
la connexion ssh par les
nounous notamment. nounous notamment.
Pour cela, il faut ajouter la VM dans `hosts` dans la catégorie correspondante (généralement dans Pour cela, il faut ajouter la VM dans `hosts` dans la catégorie correspondante
`[crans_vm]`). (généralement dans `[crans_vm]`).
Ensuite, ajoutez un fichier `host_vars/[serveur].adm.crans.org` contenant la configuration réseau Ensuite, ajoutez un fichier `host_vars/[serveur].adm.crans.org` contenant la
(`interfaces`). configuration réseau (`interfaces`).
Enfin, il faut rendre le LDAP accessible à votre machine : Enfin, il faut rendre le LDAP accessible à votre machine :
```bash ```bash
@ -181,37 +187,47 @@ 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 Il se peut qu'une erreur persiste. En effet, avec `--check` aucune
une commande nécessite au préalable qu'une autre ait eu lieu, une erreur peut se produire. 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 ### Configurer un service
Tout d'abord, ajoutez le serveur dans `group_vars/reverseproxy.yml` dans la partie `reverseproxy_sites`. 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. > - `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 fichie Dans `all.yml`, ajoutez un playbook (au nom du service pour l'identifier plus
du même nom dans `plays` (inspirez-vous d'un autre fichier librement car la nomenclature sera similaire). 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 : 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
> déclarer dans le fichier `hosts`). Généralement, il s'agira de `[nom_vm].adm.crans.org`. > s'appliquer (la VM doit être déclarer dans le fichier `hosts`).
> - `roles:` qui contiendra la (ou les) configuration des services qui seront hébergés sur la VM. > Généralement, il s'agira de `[nom_vm].adm.crans.org`.
> 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 Une fois les rôles créés, il faut créer un dossier du même nom dans le dossier
précédemment ajouté). Chacun de ces dossiers contient 2 autres dossiers : `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 > - `templates` qui contiendra tous les fichiers qui devront être copier sur
> fichiers de configuration comme pour `nginx` ou le `motd`. À noter que les `templates` peuvent contenir > la machine. Typiquement des fichiers de configuration comme pour `nginx`
> des variables sous la forme `{{ nom_de_la_variable }}`, qui sera remplacée au moment de l'exécution > ou le `motd`. À noter que les `templates` peuvent contenir des variables
> d'Ansible. Ces noms de variables sont généralement enregistrés dans `group_vars/[nom_service].yml`. Si > sous la forme `{{ nom_de_la_variable }}`, qui sera remplacée au moment de
> la variable est un secret, il faut alors l'ajouter dans le pass et écrire `{{ vault.fichier.secret }}`. > l'exécution d'Ansible. Ces noms de variables sont généralement enregistrés
> Les `templates` sont facultatifs si jamais utilisés. > dans `group_vars/[nom_service].yml`. Si la variable est un secret, il faut
> - `tasks` dont le fichier `main.yml` sera automatiquement exécuté. Il contient toutes les commandes à > alors l'ajouter dans le pass et écrire `{{ vault.fichier.secret }}`. Les
> exécuter pour rendre le service opérationnel. De même que pour `templates`, il est possible d'utiliser > `templates` sont facultatifs si jamais utilisés.
> 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.