- Automatisation
- Pré requis pour utiliser cette fonctionnalité
- Exigences de fonctionnement
- Cas d’usage
- Comment fonctionne l'automatisation
- Procédure de déploiment des VMs sur Hâpy
Automatisation¶
Dans le cas de l'utilisation d'un serveur Hapy, l'utilisateur doit créer ses machines virtuelles manuellement comme expliqué dans un article de blog.
L'idée est de pouvoir proposer une automatisation de ce type de déploiement.
À la suite de l'étude faite par Cadoles :
- Nous imposons l'utilisation d'un Zéphir
- Les utilisateurs téléchargerons des images pré-crées et distribuées par un marketplace à installer nous même
- Nous ne proposons pas de modèle d'infrastructure (Amon + Scribe, Amon + Seth AD + Seth filer, ...) (l'idée serait à travailler plus tard)
- Nous proposerons ultérieurement un outillage pour que les utilisateurs puissent créer leurs propres images (l’outillage Cadoles peut être une solution à ce propos)
Pré requis pour utiliser cette fonctionnalité¶
- Avoir un Zéphir pour manager les Hâpy et les VM installées sur ces Hâpy
- Avoir au moins un Hâpy instancié et configuré.
- l'accès vers le dépôt des images Eole/Hâpy doit être possible (proxy,...) (et le dépot préparé)
- Les images devront être Cloudifiées (cloud-init ou one-context). Voir #32118
- Les IP des différents modules EOLE seront obligatoirement Statiques.
Exigences de fonctionnement¶
- Toutes les VM managées utilisent des images persistantes
- Toutes les VM sont enregistrées sur Zéphir
- Si la VM existe déjà sur l'Hapy, on ne la recrée pas (attention: seul le template peut être actualisé)
Cas d’usage¶
Nous partons du principe qu’un ensemble d’établissement partagent les mêmes caractéristiques :
- même topologie réseau: internet, admin, pédago et dmz
- même caractéristiques de machine virtuelle (par exemple tous les amons ont la même quantité de RAM, etc)
Mise en place d’une infrastructure depuis 0¶
Le processus global se résume ainsi :
- Sur le serveur Zéphir
- Créer une variante Hâpy pour pré-définir la liste des réseaux virtuels (les adresses IP et autres devront être remplies à la main lors de la configuration de chaque Hâpy)
- Créer une variante pour Amon afin de définir les paramètres communs de machines virtuelles (RAM, taille de disque, etc)
- Créer une variante pour Scribe afin de définir les paramètres communs de machines virtuelles (RAM, taille de disque, etc)
- Pour chaque établissement
- Le créer s’il n’existe pas
- Créer le serveur Amon de la bonne variante et finir sa configuration
- Créer le serveur Scribe de la bonne variante et finir sa configuration
- Créer le serveur Hâpy de la bonne variante et finir sa configuration avec notamment la liste des serveurs créés précédemment à déployer automatiquement
- Dans chaque établissement
- Installer physiquement le serveur Hâpy
- Installer le module EOLE Hâpy
- Enregistrer le serveur Hâpy sur Zéphir
- Appliquer la configuration en exécutant la commande
instance
Le déploiement des serveurs de l’établissement devrait se faire automatiquement sans autre intervention humaine mais il faut gérer les inscriptions Zéphir.
Ajout d’un nouveau serveur à l’établissement¶
Nous allons ajouter un serveur Eolebase à l’infrastructure existente.
Le processus global se résume ainsi :
- Sur le serveur Zéphir
- Créer une variante pour Eolebase afin de définir les paramètres communs de machines virtuelles (RAM, taille de disque, etc)
- Pour chaque établissement
- Créer le serveur Eolebase de la bonne variante et finir sa configuration
- Éditer la configuration du serveur Hâpy et ajouter l’identifiant du serveur Eolebase à la liste des serveurs à déployer automatiquement
- Programmer l’envoie de la configuration du serveur Hâpy
- Sur chaque serveur Hâpy
- S’assurer que la configuration est récuppérer en exécutant la commande
synchro_zephir
- Appliquer la configuration en exécutant la commande
reconfigure
- S’assurer que la configuration est récuppérer en exécutant la commande
Le déploiement du nouveau serveur de l’établissement doit se faire automatiquement sans autre intervention humaine.
NB: L’application de la configuration manuellement sur chaque serveur Hâpy peut être remplacé par l’exécution automatique de la commande reconfigure
lors de l’envoie de la configuration.
Comment fonctionne l'automatisation¶
Il faut créer la configuration des VM dans Zéphir (dont les caractéristiques de la VM)¶
Voir #32117
(si le paquet eole-modele-vm
n'est pas installé, faire apt-eole install eole-modele-vm
)
- Créer le paquet
eole-modele-vm
- Créer le dicos avec une famille
machine_virtuelle
contenant les variables de caractéristique de machine virtuelle- variable
activer_modele_vm
ànon
par défaut vm_marketplace
: nom du MarketPlace OpenNebula où récupérer l’image disque, par défautEOLE
vm_app
: nom de l’application au sens OpenNebula MarketPlacevm_memory
: taille de la mémoire en Govm_vcpu
: nombre de CPU virtuels- Disques :
vm_disk_size
: taille en Go du disque
- Interfaces, en fonction de la valeur
nombre_interfaces
vm_net_name0
nom du réseau hâpy associé à l’interface 0vm_net_name1
nom du réseau hâpy associé à l’interface 1vm_net_nameX
nom du réseau hâpy associé à l’interface X
- variable
Ceci peut être fait lors de la création des variantes et la création des serveurs. Ce travail reste manuel.
DaD:- Je pense qu’au lieu d’avoir
Disque OS
il faudrait une liste ordonnée de disque (nom de l’image
+taille de l’image
+bootable ?
) - En fait, si nous utilisons le marketPlace, les choses ne se passent pas du tout comme cela :
- Récupérer l’identifiant (
ID
) de l’Apps (nécessite un nom d’APPS et un nom de marketPlace afin d’éviter les soucis de doublons)root@hapy:~# onemarketapp list -f MARKET="OpenNebula Public" | head -n 10 ID NAME VERSION SIZE STAT TYPE REGTIME MARKET ZONE 522 Service WordPress - KVM 5.1.3-6.0. 4G rdy img 04/01/21 OpenNebula 0 521 Service GitLab CE - KVM 13.10.0-6. 4G rdy img 04/01/21 OpenNebula 0 520 Service VNF 6.0.0-1.20 1024M rdy img 04/01/21 OpenNebula 0 519 Service AWS IoT Greengrass - KVM 1.10.2-6.0 4G rdy img 04/01/21 OpenNebula 0 518 Service Virtual Router 6.0.0-1.20 1024M rdy img 04/01/21 OpenNebula 0 517 Service Kubernetes 1.18 - KVM 1.18.18-6. 4G rdy img 04/15/21 OpenNebula 0 516 Vrouter Alpine - vCenter 5.0.2-0.20 256M rdy img 11/21/18 OpenNebula 0 515 Debian 10 6.0.0-1.20 2G rdy img 04/01/21 OpenNebula 0 514 Ubuntu 20.04 6.0.0-1.20 2.2G rdy img 04/01/21 OpenNebula 0
- Exporter l’Apps avec son identifiant, cela créé un
ID
de template et unID
d’image disqueroot@hapy:~# onemarketapp export 515 "My Debian 10" --datastore 101 IMAGE ID: 4 VMTEMPLATE ID: 2
- Modifier le template créé avec les caractéristiques récuppérées depuis Zéphir
<!-- root@hapy:~# onetemplate show -x 2 --> <VMTEMPLATE> <ID>2</ID> <UID>0</UID> <GID>0</GID> <UNAME>oneadmin</UNAME> <GNAME>oneadmin</GNAME> <NAME>My Debian 10</NAME> <PERMISSIONS> <OWNER_U>1</OWNER_U> <OWNER_M>1</OWNER_M> <OWNER_A>0</OWNER_A> <GROUP_U>0</GROUP_U> <GROUP_M>0</GROUP_M> <GROUP_A>0</GROUP_A> <OTHER_U>0</OTHER_U> <OTHER_M>0</OTHER_M> <OTHER_A>0</OTHER_A> </PERMISSIONS> <REGTIME>1619083814</REGTIME> <TEMPLATE> <CONTEXT> <NETWORK><![CDATA[YES]]></NETWORK> <SSH_PUBLIC_KEY><![CDATA[$USER[SSH_PUBLIC_KEY]]]></SSH_PUBLIC_KEY> </CONTEXT> <CPU><![CDATA[1]]></CPU> <DISK> <IMAGE_ID><![CDATA[4]]></IMAGE_ID> </DISK> <GRAPHICS> <LISTEN><![CDATA[0.0.0.0]]></LISTEN> <TYPE><![CDATA[vnc]]></TYPE> </GRAPHICS> <INFO><![CDATA[Please do not use this VM Template for vCenter VMs. Refer to the documentation https://bit.ly/37NcJ0Y]]></INFO> <LOGO><![CDATA[images/logos/debian.png]]></LOGO> <LXD_SECURITY_PRIVILEGED><![CDATA[true]]></LXD_SECURITY_PRIVILEGED> <MEMORY><![CDATA[768]]></MEMORY> <OS> <ARCH><![CDATA[x86_64]]></ARCH> </OS> <SCHED_REQUIREMENTS><![CDATA[HYPERVISOR!="vcenter"]]></SCHED_REQUIREMENTS> </TEMPLATE> </VMTEMPLATE>
- Récupérer l’identifiant (
Configuration du serveur Hâpy¶
Voir #32118
- Ajouter une variable
activer_deploiement_automatique
par défaut ànon
. - Ajouter une variable définissant la liste des serveurs à déployer :
- Soit en récupérant la liste des serveurs Zéphirs du même établissement qui ont
activer_modele_vm
oui
- Soit avec une liste statique ordonnée d’identifiants Zéphir de serveurs à déployer
- Soit en récupérant la liste des serveurs Zéphirs du même établissement qui ont
Remarque: il n'y a pas de contrôle entre la liste des Interfaces déclarées sur Hapy et les Interfaces venant des configurations de VM.
Depuis Zéphir, appliquer la configuration sur le serveur Hâpy¶
- La nouvelle configuration est déployé sur la machine Hapy
- Le reconfigure est exécuté
- les VM vont être installées, instanciées et prêtes à l'usage dans l'ordre de déclaration de la liste des VM
Procédure de déploiment des VMs sur Hâpy¶
La préparation du Hâpy aura été faite lors de son instance/reconfigure :- création des réseaux et assignation des interfaces
- création des datastores
- création des marketPlaces
Voir postservice : #32120, #32278
Voir diagnose : #32123
La procédure de déploiment des machines virtuelles sur Hâpy est faites par un script (par exemple eole-hapy-autodeploy-vms
).
Ce script doit :
- Vérifier si le déploiement automatique est activé (
activer_deploiement_automatique
oui
) - récupérer la liste des serveurs à déployer
- Récuppérer la configuration des serveur
- Vérifier la cohérence des informations Hapy/VMs. Si échec, alors on s'arrête en erreur
- Vérifier que les noms de réseaux déclarés pour les VMs existent sur Hâpy
- Vérifier que la quantité de RAM du Hâpy est supérieure à la somme des quantités de RAM des VMs
- Pour chaque serveur
- Créer/mettre à jour un
FILE
dans hapy pour exposer la configuration à l’interieur de la VM - Télécharger l’application depuis le marketPlace (cela créé une image et un template de base)
- Créer un modèle de VM à partir de l’apps téléchargé en mode persistant avec contextualisation active, le fichier de configuration et le script de post installation
- Démarrer la VM
- Si l'instance n'est pas faite:
- réponse aux questions de façon automatique
- gestion des secrets
- Monitorer la fin d'instance avant de passer à la suivante
- par l’utilisation de SSH pour l’instance de la VM ?
- l’utilisation de oneGate nécessite que la VM ait accès au frontend Hâpy ?
- Créer/mettre à jour un
Le script sera appelé en postservice
durant instance
uniquement comme active_rvp
((eole-vpn:source:postservice/00-rvp@7232d10f).
DaD:
- Il n’est pas sûr de pouvoir interroger le serveurs Zéphir de façon automatique depuis Hâpy.
- Sur Amon, la mise en place du tunnel IPSec requiert la saisie d’identifiant afin de faire une connexion XMLRPC (eole-vpn:source:scripts/active_rvp@7232d10f#L169)
- Serait-il envisageable d’ajouter une procédure automatique sur le Zéphir lors de la préparation de la configuration pour Hâpy ?
- Sélectionner le serveur Hâpy
- Cliquez sur
Actions sur le serveur
- Cliquer sur
Envoyer la configuration au serveur
- Une procédure automatique prépare la configuration avec des
.tar.gz
pour tous les serveurs concernés par le déploiement sur Hâpy