Projet

Général

Profil

Automatisation » Historique » Version 31

Daniel Dehennin, 29/04/2021 09:48

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 10 Gilles Grandgérard
178 1 Gilles Grandgérard
h2. Dans la configuration de l'Hapy,
179 10 Gilles Grandgérard
180 10 Gilles Grandgérard
Voir #32118
181 10 Gilles Grandgérard
182 10 Gilles Grandgérard
Activer *activer_deploiement_automatique*
183 1 Gilles Grandgérard
Saisir la liste des VMs :
184 1 Gilles Grandgérard
185 2 Daniel Dehennin
* Renseigner les Id Zéphir des serveurs devant être déployées sur cet Hapy (id zéphir ou nom de la vm ?)
186 2 Daniel Dehennin
* La liste est ordonnée : les VM sont démarrée dans cette ordre.
187 2 Daniel Dehennin
188 1 Gilles Grandgérard
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.
189 1 Gilles Grandgérard
190 2 Daniel Dehennin
h2. Depuis Zéphir, appliquer la configuration sur le serveur Hâpy
191 1 Gilles Grandgérard
192 2 Daniel Dehennin
* La nouvelle configuration est déployé sur la machine Hapy
193 2 Daniel Dehennin
* Le reconfigure est exécuté
194 2 Daniel Dehennin
* les VM vont être installées, instanciées et prêtes à l'usage dans l'ordre de déclaration de la liste des VM
195 1 Gilles Grandgérard
196 15 Daniel Dehennin
h1. Procédure postservice hapy
197 1 Gilles Grandgérard
198 2 Daniel Dehennin
La création des interfaces aura été faite lors de l’instance/reconfigure de l'Hapy.
199 1 Gilles Grandgérard
Idem pour les datastores....
200 1 Gilles Grandgérard
Idem pour la déclaration du marketplace EOLE/Hapy
201 1 Gilles Grandgérard
202 14 Gilles Grandgérard
Voir postservice : #32120
203 14 Gilles Grandgérard
Voir diagnose : #32123
204 12 Gilles Grandgérard
205 2 Daniel Dehennin
# Si *@activer_deploiement_automatique@* = *@non@*, stop
206 2 Daniel Dehennin
# Pour chaque *@IdZéphir@*
207 2 Daniel Dehennin
## récupérer toute la configuration de la VM dans un *@tar.gz@*
208 2 Daniel Dehennin
### Vérifier la cohérence des informations Hapy/VMs. Si échec, alors on s'arrête en erreur
209 2 Daniel Dehennin
## créer/mettre à jour un FILE dans hapy pour chaque configuration de VM 
210 2 Daniel Dehennin
## télécharger les images Apps sur l'Hapy
211 28 Gilles Grandgérard
## créer les images nécessaires Os
212 2 Daniel Dehennin
## Créer/mettre à jour un TEMPLATE (Avec une contextualisation active, +Le fichier de Configuration, +Le script de post installation)
213 2 Daniel Dehennin
## Démarrer la VM
214 2 Daniel Dehennin
## Si l'instance n'est pas faite: 
215 2 Daniel Dehennin
*** réponse aux questions de façon automatique
216 2 Daniel Dehennin
*** gestion des secrets
217 1 Gilles Grandgérard
## Monitorer la fin d'instance avant de passer à la suivante.
218 30 Daniel Dehennin
219 30 Daniel Dehennin
DaD:
220 30 Daniel Dehennin
221 30 Daniel Dehennin
* Il n’est pas sûr de pouvoir interroger le serveurs Zéphir de façon automatique depuis Hâpy.
222 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)
223 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 ?
224 30 Daniel Dehennin
### Sélectionner le serveur Hâpy
225 30 Daniel Dehennin
### Cliquez sur *@Actions sur le serveur@*
226 30 Daniel Dehennin
### Cliquer sur *@Envoyer la configuration au serveur@*
227 30 Daniel Dehennin
### 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