diff --git a/vms/README.md b/vms/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..7b971e0e480eddfd9c1051faf04c32061dfff0f1
--- /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 0000000000000000000000000000000000000000..7bf8e0259e8d408c879112a7e66de843d670a067
--- /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 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/vms/paps.csv b/vms/paps.csv
new file mode 100644
index 0000000000000000000000000000000000000000..db50ea6883387088e5e1521fe596ef1fcfe88db2
--- /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