Projet

Général

Profil

Automatisation » Historique » Version 26

Daniel Dehennin, 27/04/2021 11:01

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 2 Daniel Dehennin
Pour cela, vous devez *activer_modele_vm*. Renseigner les variables suivantes :
89 1 Gilles Grandgérard
90 2 Daniel Dehennin
* mémoire     : la mémoire en Go (par defaut : la préconisation EOLE pour le module)
91 2 Daniel Dehennin
* vcpu        : 
92 2 Daniel Dehennin
* Disque Os   : nom du disque OS de la VM (par défaut: *@<eole-module>-<eole-release>@*) + Taille
93 2 Daniel Dehennin
* Disque Data : nom du disque Data + Taille
94 2 Daniel Dehennin
* Interface 1 : nom du réseau déclaré sur Hapy
95 2 Daniel Dehennin
* Interface 2 : nom du réseau déclaré sur Hapy
96 2 Daniel Dehennin
* Interface 3 : nom du réseau déclaré sur Hapy
97 1 Gilles Grandgérard
* Interface X : nom du réseau déclaré sur Hapy
98 1 Gilles Grandgérard
99 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.
100 8 Daniel Dehennin
101 8 Daniel Dehennin
102 8 Daniel Dehennin
DaD:
103 8 Daniel Dehennin
* Je pense qu’au lieu d’avoir *@Disque OS@* et *@Disque Data@* il faudrait une liste ordonnée de disque (*@nom de l’image@* + *@taille de l’image@* + *@bootable ?@*)
104 23 Daniel Dehennin
* En fait, si nous utilisons le *marketPlace*, les choses ne se passent pas du tout comme cela :
105 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)
106 23 Daniel Dehennin
<pre>
107 23 Daniel Dehennin
root@hapy:~# onemarketapp list -f MARKET="OpenNebula Public" | head -n 10
108 23 Daniel Dehennin
  ID NAME                                   VERSION  SIZE STAT TYPE  REGTIME MARKET     ZONE
109 23 Daniel Dehennin
 522 Service WordPress - KVM             5.1.3-6.0.    4G  rdy  img 04/01/21 OpenNebula    0
110 23 Daniel Dehennin
 521 Service GitLab CE - KVM             13.10.0-6.    4G  rdy  img 04/01/21 OpenNebula    0
111 23 Daniel Dehennin
 520 Service VNF                         6.0.0-1.20 1024M  rdy  img 04/01/21 OpenNebula    0
112 23 Daniel Dehennin
 519 Service AWS IoT Greengrass - KVM    1.10.2-6.0    4G  rdy  img 04/01/21 OpenNebula    0
113 23 Daniel Dehennin
 518 Service Virtual Router              6.0.0-1.20 1024M  rdy  img 04/01/21 OpenNebula    0
114 23 Daniel Dehennin
 517 Service Kubernetes 1.18 - KVM       1.18.18-6.    4G  rdy  img 04/15/21 OpenNebula    0
115 23 Daniel Dehennin
 516 Vrouter Alpine - vCenter            5.0.2-0.20  256M  rdy  img 11/21/18 OpenNebula    0
116 23 Daniel Dehennin
 515 Debian 10                           6.0.0-1.20    2G  rdy  img 04/01/21 OpenNebula    0
117 1 Gilles Grandgérard
 514 Ubuntu 20.04                        6.0.0-1.20  2.2G  rdy  img 04/01/21 OpenNebula    0
118 23 Daniel Dehennin
</pre>
119 24 Daniel Dehennin
** Exporter l’Apps avec son identifiant, cela créé un *@ID@* de template et un *@ID@* d’image disque
120 23 Daniel Dehennin
<pre>
121 23 Daniel Dehennin
root@hapy:~# onemarketapp export 515 "My Debian 10" --datastore 101 
122 23 Daniel Dehennin
IMAGE
123 23 Daniel Dehennin
    ID: 4
124 23 Daniel Dehennin
VMTEMPLATE
125 1 Gilles Grandgérard
    ID: 2
126 23 Daniel Dehennin
</pre>
127 24 Daniel Dehennin
** Modifier le template créé avec les caractéristiques récuppérées depuis Zéphir
128 23 Daniel Dehennin
<pre><code class="xml">
129 23 Daniel Dehennin
<!-- root@hapy:~# onetemplate show -x 2 -->
130 23 Daniel Dehennin
<VMTEMPLATE>
131 23 Daniel Dehennin
  <ID>2</ID>
132 23 Daniel Dehennin
  <UID>0</UID>
133 23 Daniel Dehennin
  <GID>0</GID>
134 23 Daniel Dehennin
  <UNAME>oneadmin</UNAME>
135 23 Daniel Dehennin
  <GNAME>oneadmin</GNAME>
136 23 Daniel Dehennin
  <NAME>My Debian 10</NAME>
137 23 Daniel Dehennin
  <PERMISSIONS>
138 23 Daniel Dehennin
    <OWNER_U>1</OWNER_U>
139 23 Daniel Dehennin
    <OWNER_M>1</OWNER_M>
140 23 Daniel Dehennin
    <OWNER_A>0</OWNER_A>
141 23 Daniel Dehennin
    <GROUP_U>0</GROUP_U>
142 23 Daniel Dehennin
    <GROUP_M>0</GROUP_M>
143 23 Daniel Dehennin
    <GROUP_A>0</GROUP_A>
144 23 Daniel Dehennin
    <OTHER_U>0</OTHER_U>
145 23 Daniel Dehennin
    <OTHER_M>0</OTHER_M>
146 23 Daniel Dehennin
    <OTHER_A>0</OTHER_A>
147 23 Daniel Dehennin
  </PERMISSIONS>
148 23 Daniel Dehennin
  <REGTIME>1619083814</REGTIME>
149 23 Daniel Dehennin
  <TEMPLATE>
150 23 Daniel Dehennin
    <CONTEXT>
151 23 Daniel Dehennin
      <NETWORK><![CDATA[YES]]></NETWORK>
152 23 Daniel Dehennin
      <SSH_PUBLIC_KEY><![CDATA[$USER[SSH_PUBLIC_KEY]]]></SSH_PUBLIC_KEY>
153 23 Daniel Dehennin
    </CONTEXT>
154 23 Daniel Dehennin
    <CPU><![CDATA[1]]></CPU>
155 23 Daniel Dehennin
    <DISK>
156 23 Daniel Dehennin
      <IMAGE_ID><![CDATA[4]]></IMAGE_ID>
157 23 Daniel Dehennin
    </DISK>
158 23 Daniel Dehennin
    <GRAPHICS>
159 23 Daniel Dehennin
      <LISTEN><![CDATA[0.0.0.0]]></LISTEN>
160 23 Daniel Dehennin
      <TYPE><![CDATA[vnc]]></TYPE>
161 23 Daniel Dehennin
    </GRAPHICS>
162 23 Daniel Dehennin
    <INFO><![CDATA[Please do not use this VM Template for vCenter VMs. Refer to the documentation https://bit.ly/37NcJ0Y]]></INFO>
163 23 Daniel Dehennin
    <LOGO><![CDATA[images/logos/debian.png]]></LOGO>
164 23 Daniel Dehennin
    <LXD_SECURITY_PRIVILEGED><![CDATA[true]]></LXD_SECURITY_PRIVILEGED>
165 23 Daniel Dehennin
    <MEMORY><![CDATA[768]]></MEMORY>
166 23 Daniel Dehennin
    <OS>
167 23 Daniel Dehennin
      <ARCH><![CDATA[x86_64]]></ARCH>
168 23 Daniel Dehennin
    </OS>
169 23 Daniel Dehennin
    <SCHED_REQUIREMENTS><![CDATA[HYPERVISOR!="vcenter"]]></SCHED_REQUIREMENTS>
170 23 Daniel Dehennin
  </TEMPLATE>
171 23 Daniel Dehennin
</VMTEMPLATE>
172 23 Daniel Dehennin
</code></pre>
173 23 Daniel Dehennin
174 10 Gilles Grandgérard
175 1 Gilles Grandgérard
h2. Dans la configuration de l'Hapy,
176 10 Gilles Grandgérard
177 10 Gilles Grandgérard
Voir #32118
178 10 Gilles Grandgérard
179 10 Gilles Grandgérard
Activer *activer_deploiement_automatique*
180 1 Gilles Grandgérard
Saisir la liste des VMs :
181 1 Gilles Grandgérard
182 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 ?)
183 2 Daniel Dehennin
* La liste est ordonnée : les VM sont démarrée dans cette ordre.
184 2 Daniel Dehennin
185 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.
186 1 Gilles Grandgérard
187 2 Daniel Dehennin
h2. Depuis Zéphir, appliquer la configuration sur le serveur Hâpy
188 1 Gilles Grandgérard
189 2 Daniel Dehennin
* La nouvelle configuration est déployé sur la machine Hapy
190 2 Daniel Dehennin
* Le reconfigure est exécuté
191 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
192 1 Gilles Grandgérard
193 15 Daniel Dehennin
h1. Procédure postservice hapy
194 1 Gilles Grandgérard
195 2 Daniel Dehennin
La création des interfaces aura été faite lors de l’instance/reconfigure de l'Hapy.
196 1 Gilles Grandgérard
Idem pour les datastores....
197 1 Gilles Grandgérard
Idem pour la déclaration du marketplace EOLE/Hapy
198 1 Gilles Grandgérard
199 14 Gilles Grandgérard
Voir postservice : #32120
200 14 Gilles Grandgérard
Voir diagnose : #32123
201 12 Gilles Grandgérard
202 2 Daniel Dehennin
# Si *@activer_deploiement_automatique@* = *@non@*, stop
203 2 Daniel Dehennin
# Pour chaque *@IdZéphir@*
204 2 Daniel Dehennin
## récupérer toute la configuration de la VM dans un *@tar.gz@*
205 2 Daniel Dehennin
### Vérifier la cohérence des informations Hapy/VMs. Si échec, alors on s'arrête en erreur
206 2 Daniel Dehennin
## créer/mettre à jour un FILE dans hapy pour chaque configuration de VM 
207 2 Daniel Dehennin
## télécharger les images Apps sur l'Hapy
208 2 Daniel Dehennin
## créer les images nécessaires Os (et Data si besoin)
209 2 Daniel Dehennin
## Créer/mettre à jour un TEMPLATE (Avec une contextualisation active, +Le fichier de Configuration, +Le script de post installation)
210 2 Daniel Dehennin
## Démarrer la VM
211 2 Daniel Dehennin
## Si l'instance n'est pas faite: 
212 2 Daniel Dehennin
*** réponse aux questions de façon automatique
213 2 Daniel Dehennin
*** gestion des secrets
214 1 Gilles Grandgérard
## Monitorer la fin d'instance avant de passer à la suivante.