# Guide pour la création de VM interne au crans

## Étape préliminaire

Savoir ce que l'on veut, et regarder les besoins du services 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](./truct/)

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 élements commencent par ```d``` sont les dossiers, on peut donc "entrer dans ces dossier".

Ici le dossier qui nous interesse 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

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 inconnu
> - Bien spécifier dans l’option Disks ou 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
Fqdm : `[nom du service].adm.crans.org` 
```

__Installer openssh__ si pas fait dans l'installateur

changer la config openssh : `/etc/ssh/sshd_config`

changer `PermitRootLogin prohibit-password` en `PermitRootLogin yes`

> :warning:
> Ne pas oublier de changer `PermitRootLogin` avec `prohibit-password` après avoir lancer ansible (prochaine étape)

## Setup initial de la VM

Installez ansible sur votre machine.
Télechargez le depo git avec les fichiez ansible du Crans. [depot 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
```

## Post setup inital

changer la config openssh : `/etc/ssh/sshd_config`

changer `PermitRootLogin yes` en `PermitRootLogin prohibit-password`