# 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](/outils/os/proxmox.md)

Pour se connecter au Proxmox :

```bash
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` pour `adm`, (serveur de service)
- `flirt` pour `adh`   (service de service)

`shelldap -f shelldap_wall-e.rc`

Avec le fichier `shelldap_wall-e.rc` (évidemment modifiez `_ton_pseudo` avec
votre pseudo nounou) :

```yaml
# 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](/infrastructure/services/ldap.md) 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 : copier une configuration LDAP voisine // On garde ?

### Création de la VM sur Proxmox

> :bulb: Pour créer une VM sous nixos référez vous au repos
> [nixos](https://gitlab.crans.org/nounous/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 si option 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

## 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)

```config
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
```

Nom de domaine pour les machines adm : `adm.crans.org`

```config
FQDN : `[nom du service].adm.crans.org`
```

__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

Installez Ansible sur votre machine.
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.

Vérifiez que votre config n'a pas de problème.

```bash
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](https://gitlab.crans.org/nounous/ansible).

```bash
plays/root.yml -l [machine a déployer].adm.crans.org --extra-vars='ansible_become_user=root' -u root
```