From 00cbc19be9b32105eb27dc04f7bd8159a5ff18ec Mon Sep 17 00:00:00 2001
From: Florentin Labelle <florentin.labelle@student-cs.fr>
Date: Wed, 12 Oct 2022 10:01:14 +0200
Subject: [PATCH] Add script et tout

---
 vms/README.md      | 29 +++++++++++++++++++++++++++++
 vms/cloudinit.py   | 26 ++++++++++++++++++++++++++
 vms/cloudinit.yaml |  0
 vms/paps.csv       |  2 ++
 4 files changed, 57 insertions(+)
 create mode 100644 vms/README.md
 create mode 100644 vms/cloudinit.py
 create mode 100644 vms/cloudinit.yaml
 create mode 100644 vms/paps.csv

diff --git a/vms/README.md b/vms/README.md
new file mode 100644
index 0000000..7b971e0
--- /dev/null
+++ b/vms/README.md
@@ -0,0 +1,29 @@
+# Créer des vms pour tout les gpas
+
+## Génération de la configuration
+
+1. Les faire papser
+2. Figer le paps 10-15 mins avant le tp de déploiment
+3. Exporter en csv
+4. Mettre le résultat dans le paps.csv
+5. Lancer le cloudinit.py
+
+## Création des vms
+
+1. Créer autant de vms que de gpas(voir un peu plus):
+
+- en utilisant le champ `nombre` (premier onglet quand on crée une vm): Le faire 10 par 10 sinon ça peut bugger et les vms se mettent en erreur et tout.
+- choisir ubuntu 22.04 pour éviter le bug d'avoir à redémarrer les vms en 138.195.138.qqch
+- nano of course
+- Configuration: mettre le cloudinit.yaml
+
+## Récupérer les ips des vms avec OpenStack en CLI
+
+- si openstack cli pas configuré en local:
+  - Se ssh sur virt-deploy
+  - puis os-controller-1
+  - `lxc-attach -n os-controller-1_utility_container-07435263`
+  - `source openrc`
+- récupérer les ips
+  - `openstack server list --project formation -f yaml | yq ".[].Networks.vm[1]"`
+- les copier dans un fichier vscode, puis attribuer une vm à chaque mec en mode tu prends le numéro de ton paps et l'ip de la ligne associé.
diff --git a/vms/cloudinit.py b/vms/cloudinit.py
new file mode 100644
index 0000000..7bf8e02
--- /dev/null
+++ b/vms/cloudinit.py
@@ -0,0 +1,26 @@
+"""
+Generate cloud-init configuration for the VMs.
+"""
+import crypt
+cloudinit="""
+#cloud-config
+apt_upgrade: true
+ssh_pwauth: 1
+users:
+"""
+with open("paps.csv", encoding="utf-8") as file:
+    for line in file.readlines()[1:]:
+        login = line.split(";")[0][4:]
+        password = crypt.crypt(login, crypt.mksalt(crypt.METHOD_SHA256))
+        cloudinit += f"""
+  - name: {login}
+    primary_group: {login}
+    groups: users
+    lock_passwd: false
+    shell: /bin/bash
+    sudo: ALL=(ALL) NOPASSWD:ALL
+    passwd: {password}
+
+        """
+with open("cloudinit.yaml", "w", encoding="utf-8") as file:
+    file.write(cloudinit)
diff --git a/vms/cloudinit.yaml b/vms/cloudinit.yaml
new file mode 100644
index 0000000..e69de29
diff --git a/vms/paps.csv b/vms/paps.csv
new file mode 100644
index 0000000..db50ea6
--- /dev/null
+++ b/vms/paps.csv
@@ -0,0 +1,2 @@
+Login;Nom;Date;Classement;Valide;Scann�
+2021labellefl;Florentin Labelle;10/11/22;1;OUI;NON
-- 
GitLab