Exploration de l'automatisation de créations 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
  • Parametrer Salt-Master
  • Deployer une image ubuntu-cloud
  • Installer le paquet eole-server
  • Enregistrer l'image de la vm

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é à la clef privée utilisée dans le configuration du "cloud-provider" (cf section suivante)

Parametrer Salt-Master

Création des fichiers de configurations necessaires:

  • /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 debug pendant le processus de déploiement.

  • 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épots Eole,

Enregistrer l'image de la machine virtuelle

Nous n'avons pas été jusqu'à cette étape.