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