Automatisation » Historique » Version 30
« Précédent -
Version 30/43
(diff) -
Suivant » -
Version actuelle
Daniel Dehennin, 28/04/2021 15:35
- Automatisation
- Pré requis pour utiliser cette fonctionnalité
- Exigences de fonctionnement
- Cas d’usage
- Comment fonctionne l'automatisation
- Procédure postservice hapy
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 doit se faire automatiquement sans autre intervention humaine.
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_virtuellecontenant les variables de caractéristique de machine virtuelle- variable
activer_modele_vmànonpar défaut eole_vm_marketplace: nom du MarketPlace OpenNebula où récupérer l’image disque, par défautEOLEeole_vm_app: nom de l’application au sens OpenNebula MarketPlaceeole_vm_memory: taille de la mémoire en Goeole_vm_vcpu: nombre de CPU virtuels- Disques :
eole_vm_disk_size: taille en Go du disque
- Interfaces, en fonction de la valeur
nombre_interfaceseole_vm_net_name0nom du réseau hâpy associé à l’interface 0eole_vm_net_name1nom du réseau hâpy associé à l’interface 1eole_vm_net_nameXnom 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 OSil 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
IDde template et unIDd’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 (
Dans la configuration de l'Hapy,¶
Voir #32118
Activer activer_deploiement_automatique
Saisir la liste des VMs :
- Renseigner les Id Zéphir des serveurs devant être déployées sur cet Hapy (id zéphir ou nom de la vm ?)
- La liste est ordonnée : les VM sont démarrée dans cette ordre.
RQ: 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 postservice hapy¶
La création des interfaces aura été faite lors de l’instance/reconfigure de l'Hapy.
Idem pour les datastores....
Idem pour la déclaration du marketplace EOLE/Hapy
Voir postservice : #32120
Voir diagnose : #32123
- Si
activer_deploiement_automatique=non, stop - Pour chaque
IdZéphir- récupérer toute la configuration de la VM dans un
tar.gz- Vérifier la cohérence des informations Hapy/VMs. Si échec, alors on s'arrête en erreur
- créer/mettre à jour un FILE dans hapy pour chaque configuration de VM
- télécharger les images Apps sur l'Hapy
- créer les images nécessaires Os
- Créer/mettre à jour un TEMPLATE (Avec une contextualisation active, +Le fichier de Configuration, +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.
- récupérer toute la configuration de la VM dans un
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.gzpour tous les serveurs concernés par le déploiement sur Hâpy