8.2 KiB
Guide pour la création de VM interne au Crans
Étape préliminaire
Savoir ce que l'on veut et regarder les besoins du service que l'on souhaite installer
Création de la VM
Se connecter à Proxmox
Proxmox est un logiciel de virtualisation utilisé au Crans, plus d'info ici Proxmox
Pour se connecter au Proxmox :
ssh -NL 8006:localhost:8006 sam.adm.crans.org
Puis connectez-vous https://localhost:8006/
dans votre navigateur open source
préféré (Et connectez-vous avec vos identifiants nounous)
Trouvez un identifiant de VM qui n'ai pas déjà pris.
Se connecter au bon LDAP
Se connecter au LDAP à l'aide de shelldap par exemple :
wall-e
pouradm
, (serveur de service)flirt
pouradh
(service de service)
shelldap -f shelldap_wall-e.rc
Avec le fichier shelldap_wall-e.rc
(évidemment modifiez _ton_pseudo
avec
votre pseudo nounou) :
# Fichier de configuration shelldap admin
# de bleizi/shirenn adapté
server: ldaps://172.16.10.100:636
binddn: uid=_ton_pseudo,ou=passwd,dc=crans,dc=org
basedn: dc=crans,dc=org
promptpass: yes
tls: yes
tls_cacert: /etc/ldap/ldap.pem
"Bind password :" -> Entrez votre mot de passe nounous
Créer l'entrée dans LDAP
Base de navigation dans le LDAP
Les éléments commencent par d
sont les dossiers, on peut donc "entrer
dans ces dossiers".
Ici le dossier qui nous intéresse est le dossier ou=hosts
qui contient
les configurations des différentes VM.
Ce sont dans "ces fichiers" de configuration qu'est décrit les la VM.
On peut utiliser cat
pour regarder leurs contenues, mv
pour changer
leurs noms ou les déplacer. Pour les éditer la commande est edit
.
Voir : doc ldap pour en savoir plus à
propos du LDAP et de shelldap.
Configuration réseau
Convention du Crans (plus ou moins respecté), si votre id est XYZ (avec X, Y, Z des chiffres):
- L'adresse IPv4 est alors :
172.16.[vlan].XYZ
- L'adresse IPv6 est alors :
fd00::10:0:ff:fe0X:YZ[vlan]
- L'adresse MAC est alors :
02:00:00:0X:YZ:[vlan]
Recommendation : pour que ce soit plus simple vous pouvez vous inspirer de la configuration d'une VM pré-existante.
Création de la VM sur Proxmox
💡 Pour créer une VM sous nixos référez vous au repos nixos du Crans
Créer une VM dans Proxmox avec l'ISO Debian. Mettez l'id que vous avez sélectionné précédemment. Et le nom que vous souhaitez donner à la machine (un nom avec une ref obscure ou un nom qui reprends le nom du service qui sera hébergé afin de facilement savoir à quoi sert la VM)
- Ne pas modifier d'autre option si inconnue
- Bien spécifier dans l'option Disks où sera stocké la VM : serveur adhérent avec 10TB
- Entrer la bonne adresse MAC dans le networking
- Préciser dans Network les réseaux qui vont être utilisés par la VM. Pour cela, regardez cette documentation
Installation de Debian
Config réseaux
Configurez l'interface réseau de la VM (pas de DHCP):
l'IP du serveur lui-même est à entrer manuellement (pas d'autoconf)
Gateway : ipv4 : 172.16.10.101 (bizarre, fournit par routeur sam)
romanesco : ipv4 : 172.16.10.128 (DNS récursif)
hostname : le_nom_de_la machine
Pour plus d'information, regardez cette documentation.
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
FQDN : `[nom du service].adm.crans.org`
- 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 de le configurer après installation dans/etc/apt/sources.list
.
Installer openssh si pas fait dans l'installateur
Copiez votre clé publique ssh sur la VM fraichement créer
via la terminal disponible sur Proxmox (~/.ssh/authorized_keys
)
Setup initial de la VM
Pour faciliter le déploiement des VM, le Crans opte pour l'utilisation d'Ansible.
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 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 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 :
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.
plays/root.yml -l [machine a déployer].adm.crans.org --extra-vars='ansible_become_user=root' -u root --check
Une fois que le check n'a plus d'erreur, vous pouvez lancer la même commande
sans le --check
.
Plus d'info sur Ansible dans son
guide dédier.
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 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 fichierhosts
). 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 pournginx
ou lemotd
. À noter que lestemplates
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 dansgroup_vars/[nom_service].yml
. Si la variable est un secret, il faut alors l'ajouter dans le pass et écrire{{ vault.fichier.secret }}
. Lestemplates
sont facultatifs si jamais utilisés.tasks
dont le fichiermain.yml
sera automatiquement exécuté. Il contient toutes les commandes à exécuter pour rendre le service opérationnel. De même que pourtemplates
, il est possible d'utiliser des variables.
Une fois la configuration terminée, pensez à push les modifications sur le git Ansible.