Automatisation » Historique » Version 35
Daniel Dehennin, 29/04/2021 11:00
| 1 | 2 | Daniel Dehennin | {{>toc}} |
|---|---|---|---|
| 2 | 2 | Daniel Dehennin | |
| 3 | 1 | Gilles Grandgérard | h1. Automatisation |
| 4 | 1 | Gilles Grandgérard | |
| 5 | 15 | Daniel Dehennin | 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":https://pcll.ac-dijon.fr/eole/utiliser-hapy-virtualiser-modules-eole/. |
| 6 | 1 | Gilles Grandgérard | |
| 7 | 2 | Daniel Dehennin | L'idée est de pouvoir proposer une *automatisation* de ce type de déploiement. |
| 8 | 1 | Gilles Grandgérard | |
| 9 | 3 | Daniel Dehennin | À la suite de l'étude faite par Cadoles : |
| 10 | 1 | Gilles Grandgérard | |
| 11 | 1 | Gilles Grandgérard | * Nous imposons l'utilisation d'un Zéphir |
| 12 | 21 | Daniel Dehennin | * Les utilisateurs téléchargerons des images pré-crées et distribuées par un "marketplace":https://docs.opennebula.io/6.0/management_and_operations/storage_management/marketplaces.html#public-marketplaces à installer "nous même":https://github.com/OpenNebula/appmarket-simple |
| 13 | 2 | Daniel Dehennin | * Nous ne proposons pas de modèle d'infrastructure (Amon + Scribe, Amon + Seth AD + Seth filer, ...) (l'idée serait à travailler plus tard) |
| 14 | 15 | Daniel Dehennin | * 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) |
| 15 | 1 | Gilles Grandgérard | |
| 16 | 2 | Daniel Dehennin | h1. Pré requis pour utiliser cette fonctionnalité |
| 17 | 1 | Gilles Grandgérard | |
| 18 | 2 | Daniel Dehennin | * Avoir un Zéphir pour manager les Hâpy et les VM installées sur ces Hâpy |
| 19 | 2 | Daniel Dehennin | * Avoir au moins un Hâpy instancié et configuré. |
| 20 | 11 | Gilles Grandgérard | * l'accès vers le dépôt des images Eole/Hâpy doit être possible (proxy,...) (et le dépot préparé) |
| 21 | 1 | Gilles Grandgérard | * Les images devront être Cloudifiées (cloud-init ou one-context). Voir #32118 |
| 22 | 25 | Gilles Grandgérard | * Les IP des différents modules EOLE seront obligatoirement Statiques. |
| 23 | 1 | Gilles Grandgérard | |
| 24 | 1 | Gilles Grandgérard | |
| 25 | 1 | Gilles Grandgérard | h1. Exigences de fonctionnement |
| 26 | 1 | Gilles Grandgérard | |
| 27 | 1 | Gilles Grandgérard | * Toutes les VM *managées* utilisent des images persistantes |
| 28 | 1 | Gilles Grandgérard | * Toutes les VM sont enregistrées sur Zéphir |
| 29 | 1 | Gilles Grandgérard | * Si la VM existe déjà sur l'Hapy, on ne la recrée pas (attention: seul le template peut être actualisé) |
| 30 | 1 | Gilles Grandgérard | |
| 31 | 15 | Daniel Dehennin | h1. Cas d’usage |
| 32 | 15 | Daniel Dehennin | |
| 33 | 15 | Daniel Dehennin | Nous partons du principe qu’un ensemble d’établissement partagent les mêmes caractéristiques : |
| 34 | 1 | Gilles Grandgérard | |
| 35 | 17 | Daniel Dehennin | * même topologie réseau: internet, admin, pédago et dmz |
| 36 | 18 | Daniel Dehennin | * même caractéristiques de machine virtuelle (par exemple tous les amons ont la même quantité de RAM, etc) |
| 37 | 15 | Daniel Dehennin | |
| 38 | 22 | Daniel Dehennin | h2. Mise en place d’une infrastructure depuis 0 |
| 39 | 22 | Daniel Dehennin | |
| 40 | 15 | Daniel Dehennin | Le processus global se résume ainsi : |
| 41 | 15 | Daniel Dehennin | |
| 42 | 15 | Daniel Dehennin | # Sur le serveur Zéphir |
| 43 | 15 | Daniel Dehennin | ## 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) |
| 44 | 15 | Daniel Dehennin | ## Créer une variante pour Amon afin de définir les paramètres communs de machines virtuelles (RAM, taille de disque, etc) |
| 45 | 15 | Daniel Dehennin | ## Créer une variante pour Scribe afin de définir les paramètres communs de machines virtuelles (RAM, taille de disque, etc) |
| 46 | 15 | Daniel Dehennin | ## Pour chaque établissement |
| 47 | 15 | Daniel Dehennin | ### Le créer s’il n’existe pas |
| 48 | 15 | Daniel Dehennin | ### Créer le serveur Amon de la bonne variante et finir sa configuration |
| 49 | 15 | Daniel Dehennin | ### Créer le serveur Scribe de la bonne variante et finir sa configuration |
| 50 | 20 | Daniel Dehennin | ### 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 |
| 51 | 15 | Daniel Dehennin | # Dans chaque établissement |
| 52 | 15 | Daniel Dehennin | ## Installer physiquement le serveur Hâpy |
| 53 | 15 | Daniel Dehennin | ## Installer le module EOLE Hâpy |
| 54 | 1 | Gilles Grandgérard | ## Enregistrer le serveur Hâpy sur Zéphir |
| 55 | 26 | Daniel Dehennin | ## [[Automatisation#Procédure-postservice-hapy|Appliquer la configuration]] en exécutant la commande *@instance@* |
| 56 | 19 | Daniel Dehennin | |
| 57 | 1 | Gilles Grandgérard | Le déploiement des serveurs de l’établissement doit se faire automatiquement sans autre intervention humaine. |
| 58 | 22 | Daniel Dehennin | |
| 59 | 22 | Daniel Dehennin | h2. Ajout d’un nouveau serveur à l’établissement |
| 60 | 22 | Daniel Dehennin | |
| 61 | 22 | Daniel Dehennin | Nous allons ajouter un serveur Eolebase à l’infrastructure existente. |
| 62 | 22 | Daniel Dehennin | |
| 63 | 22 | Daniel Dehennin | Le processus global se résume ainsi : |
| 64 | 22 | Daniel Dehennin | |
| 65 | 22 | Daniel Dehennin | # Sur le serveur Zéphir |
| 66 | 22 | Daniel Dehennin | ## Créer une variante pour Eolebase afin de définir les paramètres communs de machines virtuelles (RAM, taille de disque, etc) |
| 67 | 22 | Daniel Dehennin | ## Pour chaque établissement |
| 68 | 22 | Daniel Dehennin | ### Créer le serveur Eolebase de la bonne variante et finir sa configuration |
| 69 | 22 | Daniel Dehennin | ### Éditer la configuration du serveur Hâpy et ajouter l’identifiant du serveur Eolebase à la liste des serveurs à déployer automatiquement |
| 70 | 22 | Daniel Dehennin | ### Programmer l’envoie de la configuration du serveur Hâpy |
| 71 | 22 | Daniel Dehennin | # Sur chaque serveur Hâpy |
| 72 | 22 | Daniel Dehennin | ## S’assurer que la configuration est récuppérer en exécutant la commande *@synchro_zephir@* |
| 73 | 26 | Daniel Dehennin | ## [[Automatisation#Procédure-postservice-hapy|Appliquer la configuration]] en exécutant la commande *@reconfigure@* |
| 74 | 22 | Daniel Dehennin | |
| 75 | 22 | Daniel Dehennin | Le déploiement du nouveau serveur de l’établissement doit se faire automatiquement sans autre intervention humaine. |
| 76 | 22 | Daniel Dehennin | |
| 77 | 22 | Daniel Dehennin | 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. |
| 78 | 22 | Daniel Dehennin | |
| 79 | 15 | Daniel Dehennin | |
| 80 | 2 | Daniel Dehennin | h1. Comment fonctionne l'automatisation |
| 81 | 1 | Gilles Grandgérard | |
| 82 | 1 | Gilles Grandgérard | h2. Il faut créer la configuration des VM dans Zéphir (dont les caractéristiques de la VM) |
| 83 | 1 | Gilles Grandgérard | |
| 84 | 6 | Daniel Dehennin | Voir #32117 |
| 85 | 4 | Gilles Grandgérard | |
| 86 | 7 | Daniel Dehennin | (si le paquet *@eole-modele-vm@* n'est pas installé, faire *@apt-eole install eole-modele-vm@*) |
| 87 | 1 | Gilles Grandgérard | |
| 88 | 29 | Daniel Dehennin | * Créer le paquet *@eole-modele-vm@* |
| 89 | 29 | Daniel Dehennin | * Créer le dicos avec une famille *@machine_virtuelle@* contenant les variables de caractéristique de machine virtuelle |
| 90 | 29 | Daniel Dehennin | ** variable *@activer_modele_vm@* à *@non@* par défaut |
| 91 | 31 | Daniel Dehennin | ** *@vm_marketplace@* : nom du MarketPlace OpenNebula où récupérer l’image disque, par défaut *@EOLE@* |
| 92 | 31 | Daniel Dehennin | ** *@vm_app@* : nom de l’application au sens OpenNebula MarketPlace |
| 93 | 31 | Daniel Dehennin | ** *@vm_memory@* : taille de la mémoire en Go |
| 94 | 31 | Daniel Dehennin | ** *@vm_vcpu@* : nombre de CPU virtuels |
| 95 | 29 | Daniel Dehennin | ** Disques : |
| 96 | 31 | Daniel Dehennin | *** *@vm_disk_size@* : taille en Go du disque |
| 97 | 29 | Daniel Dehennin | ** Interfaces, en fonction de la valeur *@nombre_interfaces@* |
| 98 | 31 | Daniel Dehennin | *** *@vm_net_name0@* nom du réseau hâpy associé à l’interface 0 |
| 99 | 31 | Daniel Dehennin | *** *@vm_net_name1@* nom du réseau hâpy associé à l’interface 1 |
| 100 | 31 | Daniel Dehennin | *** *@vm_net_nameX@* nom du réseau hâpy associé à l’interface X |
| 101 | 1 | Gilles Grandgérard | |
| 102 | 1 | Gilles Grandgérard | Ceci peut être fait lors de la création des variantes et la création des serveurs. Ce travail reste manuel. |
| 103 | 8 | Daniel Dehennin | |
| 104 | 8 | Daniel Dehennin | |
| 105 | 1 | Gilles Grandgérard | DaD: |
| 106 | 27 | Gilles Grandgérard | * 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 ?@*) |
| 107 | 23 | Daniel Dehennin | * En fait, si nous utilisons le *marketPlace*, les choses ne se passent pas du tout comme cela : |
| 108 | 23 | Daniel Dehennin | ** 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) |
| 109 | 23 | Daniel Dehennin | <pre> |
| 110 | 23 | Daniel Dehennin | root@hapy:~# onemarketapp list -f MARKET="OpenNebula Public" | head -n 10 |
| 111 | 23 | Daniel Dehennin | ID NAME VERSION SIZE STAT TYPE REGTIME MARKET ZONE |
| 112 | 23 | Daniel Dehennin | 522 Service WordPress - KVM 5.1.3-6.0. 4G rdy img 04/01/21 OpenNebula 0 |
| 113 | 23 | Daniel Dehennin | 521 Service GitLab CE - KVM 13.10.0-6. 4G rdy img 04/01/21 OpenNebula 0 |
| 114 | 23 | Daniel Dehennin | 520 Service VNF 6.0.0-1.20 1024M rdy img 04/01/21 OpenNebula 0 |
| 115 | 23 | Daniel Dehennin | 519 Service AWS IoT Greengrass - KVM 1.10.2-6.0 4G rdy img 04/01/21 OpenNebula 0 |
| 116 | 23 | Daniel Dehennin | 518 Service Virtual Router 6.0.0-1.20 1024M rdy img 04/01/21 OpenNebula 0 |
| 117 | 23 | Daniel Dehennin | 517 Service Kubernetes 1.18 - KVM 1.18.18-6. 4G rdy img 04/15/21 OpenNebula 0 |
| 118 | 23 | Daniel Dehennin | 516 Vrouter Alpine - vCenter 5.0.2-0.20 256M rdy img 11/21/18 OpenNebula 0 |
| 119 | 23 | Daniel Dehennin | 515 Debian 10 6.0.0-1.20 2G rdy img 04/01/21 OpenNebula 0 |
| 120 | 1 | Gilles Grandgérard | 514 Ubuntu 20.04 6.0.0-1.20 2.2G rdy img 04/01/21 OpenNebula 0 |
| 121 | 23 | Daniel Dehennin | </pre> |
| 122 | 24 | Daniel Dehennin | ** Exporter l’Apps avec son identifiant, cela créé un *@ID@* de template et un *@ID@* d’image disque |
| 123 | 23 | Daniel Dehennin | <pre> |
| 124 | 23 | Daniel Dehennin | root@hapy:~# onemarketapp export 515 "My Debian 10" --datastore 101 |
| 125 | 23 | Daniel Dehennin | IMAGE |
| 126 | 23 | Daniel Dehennin | ID: 4 |
| 127 | 23 | Daniel Dehennin | VMTEMPLATE |
| 128 | 1 | Gilles Grandgérard | ID: 2 |
| 129 | 23 | Daniel Dehennin | </pre> |
| 130 | 24 | Daniel Dehennin | ** Modifier le template créé avec les caractéristiques récuppérées depuis Zéphir |
| 131 | 23 | Daniel Dehennin | <pre><code class="xml"> |
| 132 | 23 | Daniel Dehennin | <!-- root@hapy:~# onetemplate show -x 2 --> |
| 133 | 23 | Daniel Dehennin | <VMTEMPLATE> |
| 134 | 23 | Daniel Dehennin | <ID>2</ID> |
| 135 | 23 | Daniel Dehennin | <UID>0</UID> |
| 136 | 23 | Daniel Dehennin | <GID>0</GID> |
| 137 | 23 | Daniel Dehennin | <UNAME>oneadmin</UNAME> |
| 138 | 23 | Daniel Dehennin | <GNAME>oneadmin</GNAME> |
| 139 | 23 | Daniel Dehennin | <NAME>My Debian 10</NAME> |
| 140 | 23 | Daniel Dehennin | <PERMISSIONS> |
| 141 | 23 | Daniel Dehennin | <OWNER_U>1</OWNER_U> |
| 142 | 23 | Daniel Dehennin | <OWNER_M>1</OWNER_M> |
| 143 | 23 | Daniel Dehennin | <OWNER_A>0</OWNER_A> |
| 144 | 23 | Daniel Dehennin | <GROUP_U>0</GROUP_U> |
| 145 | 23 | Daniel Dehennin | <GROUP_M>0</GROUP_M> |
| 146 | 23 | Daniel Dehennin | <GROUP_A>0</GROUP_A> |
| 147 | 23 | Daniel Dehennin | <OTHER_U>0</OTHER_U> |
| 148 | 23 | Daniel Dehennin | <OTHER_M>0</OTHER_M> |
| 149 | 23 | Daniel Dehennin | <OTHER_A>0</OTHER_A> |
| 150 | 23 | Daniel Dehennin | </PERMISSIONS> |
| 151 | 23 | Daniel Dehennin | <REGTIME>1619083814</REGTIME> |
| 152 | 23 | Daniel Dehennin | <TEMPLATE> |
| 153 | 23 | Daniel Dehennin | <CONTEXT> |
| 154 | 23 | Daniel Dehennin | <NETWORK><![CDATA[YES]]></NETWORK> |
| 155 | 23 | Daniel Dehennin | <SSH_PUBLIC_KEY><![CDATA[$USER[SSH_PUBLIC_KEY]]]></SSH_PUBLIC_KEY> |
| 156 | 23 | Daniel Dehennin | </CONTEXT> |
| 157 | 23 | Daniel Dehennin | <CPU><![CDATA[1]]></CPU> |
| 158 | 23 | Daniel Dehennin | <DISK> |
| 159 | 23 | Daniel Dehennin | <IMAGE_ID><![CDATA[4]]></IMAGE_ID> |
| 160 | 23 | Daniel Dehennin | </DISK> |
| 161 | 23 | Daniel Dehennin | <GRAPHICS> |
| 162 | 23 | Daniel Dehennin | <LISTEN><![CDATA[0.0.0.0]]></LISTEN> |
| 163 | 23 | Daniel Dehennin | <TYPE><![CDATA[vnc]]></TYPE> |
| 164 | 23 | Daniel Dehennin | </GRAPHICS> |
| 165 | 23 | Daniel Dehennin | <INFO><![CDATA[Please do not use this VM Template for vCenter VMs. Refer to the documentation https://bit.ly/37NcJ0Y]]></INFO> |
| 166 | 23 | Daniel Dehennin | <LOGO><![CDATA[images/logos/debian.png]]></LOGO> |
| 167 | 23 | Daniel Dehennin | <LXD_SECURITY_PRIVILEGED><![CDATA[true]]></LXD_SECURITY_PRIVILEGED> |
| 168 | 1 | Gilles Grandgérard | <MEMORY><![CDATA[768]]></MEMORY> |
| 169 | 23 | Daniel Dehennin | <OS> |
| 170 | 23 | Daniel Dehennin | <ARCH><![CDATA[x86_64]]></ARCH> |
| 171 | 23 | Daniel Dehennin | </OS> |
| 172 | 23 | Daniel Dehennin | <SCHED_REQUIREMENTS><![CDATA[HYPERVISOR!="vcenter"]]></SCHED_REQUIREMENTS> |
| 173 | 23 | Daniel Dehennin | </TEMPLATE> |
| 174 | 23 | Daniel Dehennin | </VMTEMPLATE> |
| 175 | 23 | Daniel Dehennin | </code></pre> |
| 176 | 31 | Daniel Dehennin | |
| 177 | 35 | Daniel Dehennin | h2. Configuration du serveur Hâpy |
| 178 | 10 | Gilles Grandgérard | |
| 179 | 10 | Gilles Grandgérard | Voir #32118 |
| 180 | 10 | Gilles Grandgérard | |
| 181 | 34 | Daniel Dehennin | * Ajouter une variable *@activer_deploiement_automatique@* par défaut à *@non@*. |
| 182 | 34 | Daniel Dehennin | * Ajouter une variable définissant la liste des serveurs à déployer : |
| 183 | 34 | Daniel Dehennin | ** Soit en récupérant la liste des serveurs Zéphirs du même établissement qui ont *@activer_modele_vm@* == *@oui@* |
| 184 | 34 | Daniel Dehennin | ** Soit avec une liste statique ordonnée d’identifiants Zéphir de serveurs à déployer |
| 185 | 2 | Daniel Dehennin | |
| 186 | 1 | Gilles Grandgérard | 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. |
| 187 | 2 | Daniel Dehennin | |
| 188 | 1 | Gilles Grandgérard | h2. Depuis Zéphir, appliquer la configuration sur le serveur Hâpy |
| 189 | 2 | Daniel Dehennin | |
| 190 | 2 | Daniel Dehennin | * La nouvelle configuration est déployé sur la machine Hapy |
| 191 | 2 | Daniel Dehennin | * Le reconfigure est exécuté |
| 192 | 1 | Gilles Grandgérard | * les VM vont être installées, instanciées et prêtes à l'usage dans l'ordre de déclaration de la liste des VM |
| 193 | 33 | Daniel Dehennin | |
| 194 | 1 | Gilles Grandgérard | h1. Procédure de déploiment des VMs sur Hâpy |
| 195 | 33 | Daniel Dehennin | |
| 196 | 33 | Daniel Dehennin | La préparation du Hâpy aura été faite lors de son instance/reconfigure : |
| 197 | 33 | Daniel Dehennin | * création des réseaux et assignation des interfaces |
| 198 | 33 | Daniel Dehennin | * création des datastores |
| 199 | 1 | Gilles Grandgérard | * création des marketPlaces |
| 200 | 1 | Gilles Grandgérard | |
| 201 | 1 | Gilles Grandgérard | Voir postservice : #32120 |
| 202 | 1 | Gilles Grandgérard | Voir diagnose : #32123 |
| 203 | 33 | Daniel Dehennin | |
| 204 | 33 | Daniel Dehennin | La procédure de déploiment des machines virtuelles sur Hâpy est faites par un script (par exemple *@eole-hapy-autodeploy-vms@*). |
| 205 | 33 | Daniel Dehennin | |
| 206 | 33 | Daniel Dehennin | Ce script doit : |
| 207 | 33 | Daniel Dehennin | |
| 208 | 33 | Daniel Dehennin | # Vérifier si le déploiement automatique est activé (*@activer_deploiement_automatique@* == *@oui@*) |
| 209 | 33 | Daniel Dehennin | # récupérer la [[Automatisation#Configuration-du-serveurs-Hâpy|liste des serveurs à déployer]] |
| 210 | 33 | Daniel Dehennin | ## Récuppérer la configuration des serveur |
| 211 | 33 | Daniel Dehennin | ## Vérifier la cohérence des informations Hapy/VMs. Si échec, alors on s'arrête en erreur |
| 212 | 33 | Daniel Dehennin | # Pour chaque serveur |
| 213 | 33 | Daniel Dehennin | ## Créer/mettre à jour un *@FILE@* dans hapy pour exposer la configuration à l’interieur de la VM |
| 214 | 33 | Daniel Dehennin | ## Télécharger l’application depuis le marketPlace (cela créé une image et un template de base) |
| 215 | 28 | Gilles Grandgérard | ## 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 |
| 216 | 33 | Daniel Dehennin | ## Démarrer la VM |
| 217 | 2 | Daniel Dehennin | ## Si l'instance n'est pas faite: |
| 218 | 2 | Daniel Dehennin | *** réponse aux questions de façon automatique |
| 219 | 33 | Daniel Dehennin | *** gestion des secrets |
| 220 | 33 | Daniel Dehennin | ## Monitorer la fin d'instance avant de passer à la suivante |
| 221 | 33 | Daniel Dehennin | *** l’utilisation de "oneGate":https://docs.opennebula.io/6.0/management_and_operations/multivm_service_management/onegate_usage.html nécessite que la VM ait accès au frontend Hâpy |
| 222 | 30 | Daniel Dehennin | *** autre méthode ? |
| 223 | 30 | Daniel Dehennin | |
| 224 | 30 | Daniel Dehennin | DaD: |
| 225 | 30 | Daniel Dehennin | |
| 226 | 30 | Daniel Dehennin | * Il n’est pas sûr de pouvoir interroger le serveurs Zéphir de façon automatique depuis Hâpy. |
| 227 | 30 | Daniel Dehennin | ** 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) |
| 228 | 30 | Daniel Dehennin | ** Serait-il envisageable d’ajouter une procédure automatique sur le Zéphir lors de la préparation de la configuration pour Hâpy ? |
| 229 | 30 | Daniel Dehennin | ### Sélectionner le serveur Hâpy |
| 230 | 30 | Daniel Dehennin | ### Cliquez sur *@Actions sur le serveur@* |
| 231 | 30 | Daniel Dehennin | ### Cliquer sur *@Envoyer la configuration au serveur@* |
| 232 | 1 | Gilles Grandgérard | ### 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 |