L’objectif de cet atelier était de déployer une infrastructure de génération d’images fresh install avec l’outil SaltStack.
Le travail a été divisé en 3 sous-ateliers :
- Générer une image master depuis l’ISO EOLE ;
- Générer une image EOLE depuis une Ubuntu cloud ;
- Déployer et configurer une image master existante.
Voici le compte rendu du deuxième sous-atelier.
Générer une image EOLE depuis une Ubuntu cloud
Exploration de l’automatisation de création d’images disque pour machine virtuelles
Le but est de fournir une image d’Eolebase à partir d’une image ubuntu-cloud. Le processus doit être automatique via Salt.
Processus suivi
- Contextualiser l’image de base avec la clef SSH du serveur Salt ;
- Paramétrer Salt Master ;
- Déployer une image ubuntu-cloud ;
- Installer le paquet eole-server ;
- Enregistrer l’image de la machine virtuelle.
Contextualiser l’image de base avec la clef SSH du serveur Salt
Dans les paramètres du template OpenNebula de l’image ubuntu-cloud que l’on va utiliser, il faut enregistrer la clef publique SSH associée à la clef privée utilisée dans le configuration du “cloud-provider” (cf section suivante).
Paramétrer Salt-Master
Création des fichiers de configuration nécessaires :
- /etc/salt/cloud.providers.d/nebula.conf
# Note: This example is for /etc/salt/cloud.providers or any file in the # /etc/salt/cloud.providers.d/ directory. nebula: # Set up the location of the salt master # minion: master: 192.168.2.53 # Define xml_rpc setting which Salt-Cloud uses to connect to the OpenNebula API. Required. # xml_rpc: http://192.168.2.13:2633/RPC2 # Define the OpenNebula access credentials. This can be the main "oneadmin" user that OpenNebula uses as the # OpenNebula main admin, or it can be a user defined in the OpenNebula instance. Required. # #user: oneadmin #password: peadeatLabs6 user: joe password: nebula2016 # Define the private key location that is used by OpenNebula to access new VMs. This setting is required if # provisioning new VMs or accessing VMs previously created with the associated public key. # private_key: /root/joe.rsa driver: opennebula
- /etc/salt/cloud.profiles.d/nebula.conf
eolebase: provider: nebula template: ubuntu-16.04-server-amd64.context image: ubuntu-16.04-server-amd64.context-disk-0 minion: startup_states: sls sls_list: - eolebase
Installer le paquet eole-server
Création d’une règle Salt pour installer le paquet eole-server sur la machine déployée
Dans le dossier /srv/salt/
- Créer un fichier top.sls avec ce contenu:
base: eole: - eolebase
- Créer un fichier /srv/salt/eolebase.sls avec le contenu suivant:
eole-repo: pkgrepo.managed: - humanname: Eole - name: deb http://eole.ac-dijon.fr/eole eole-2.6.0 main cloud - dist: eole-2.6.0 - file: /etc/apt/sources.list.d/eole.list - require_in: - pkg: eole-server - gpgcheck: 1 - key_url: http://eole.ac-dijon.fr/eole/project/eole-2.6-repository.key /etc/salt/cloud.providers.d/nebula.conf: file.managed: - source: salt://cloud/cloud.providers.d/nebula.conf - target: /etc/salt/cloud.providers.d/nebula.conf - makedirs: True eole-server: pkg: - installed
Application de cette règle automatiquement après le déploiement
Créer le répertoire /etc/salt/cloud.maps.d/ et dans ce répertoire, créer un fichier do-eolebase.map avec le contenu suivant:
eolebase: - BuildEolebase: minion: startup_states: eolebase grains: roles: eolebase
Tester la création d’Eolebase via Salt
root@deployement$>salt-cloud -m /etc/salt/cloud.maps.d/do-eolebase.map -l all
L’option -l all permet d’avoir tous les messages de débogage pendant le processus de déploiement et les résultats attendus sont :
- L’image doit pouvoir se déployer sans problème ;
- Salt doit s’installer sur le machine déployée ;
- eole-server doit s’installer depuis les dépôts Eole.
Enregistrer l’image de la machine virtuelle
Faute de temps nous n’avons pas testé l’enregistrement de l’image de la machine virtuelle.