L’objectif de cet atelier était de déployer une infrastructure de génération d’images fresh install avec l’outil SaltStack.

https://saltstack.com/

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.

https://www.ubuntu.com/cloud

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.