Skip to content

L'agent cloud-init

Présentation🔗

L'agent cloud-init est en charge de la configuration de l'instance au déploiement. Il est présent par défaut dans les images de déploiement officielles Openstack. Son installation est fortement recommandée lors de la création d'une image personnalisée. À noter qu'il existe une version spécifique pour les OS Microsoft ( Créer une image Windows ).

Par défaut, cloud-init configure le hostname de l'instance, et, pour les OS Linux, ajoute une clef SSH si spécifiée au déploiement.

Cette documentation est une introduction à cloud-init et n'est pas représentative de toute les possibilités offertes au travers de ses différents modules. Pour les utilisations avancées, les liens vers les documentations officielles sont disponibles dans la section Références en bas de page.

Note

  • cloud-init ne supporte pas d'interactions post déploiement
  • le fonctionnement de cloud-init nécessite l'accès au service de metadata http://169.254.169.254:80. Il est donc dépendant des Groupes de sécurité appliqués à l'instance

Attention

Le fichier de configuration cloud-init, qui n'est pas chiffré et est accessible à tout moment par l'instance, n'est de fait pas adapté aux contenus sensibles. Si la configuration contient des mots de passe, il est vivement recommandé de les changer sans délais.

Exemples d'utilisations🔗

Le fichier de configuration cloud-init doit impérativement commencer par #cloud-config et respecter la syntaxe YAML en utilisant les arguments indiqués dans la documentation du module en question.

Définir un mot de passe🔗

Ci après les configurations permettant de définir le mot de passe de l'utilisateur par défaut de l'image déployée.

#cloud-config

# /! Les informations de configuration clout-init sont accessibles par l'instance en claire à tout moment
# /! Mot de passe à usage strictement temporaire, à changer dans les meilleurs délais

password: **********
chpasswd: { expire: True }
ssh_pwauth: True

Note

  • "expire: True" force le changement de mot de passe à la première authentification
  • "ssh_pwauth: True" active l'authentification SSH par mot de passe, qui est par défaut désactivée
#cloud-config

# /! Les informations de configuration clout-init sont accessibles par l'instance en claire à tout moment
# /! Mot de passe à usage strictement temporaire, à changer dans les meilleurs délais

users:
  -
    name: Administrator
    passwd: **********
    primary_group: Users
    groups: Administrators
    inactive: False

Créer des fichiers ou modifier leur contenu🔗

Dans cet exemple, deux fichiers sont créés avec des contenus différents, en fonction des besoins finaux, comme par exemple définir un proxy pour le gestionnaire de paquet APT, et configurer un message d'accueil au login.

#cloud-config
write_files:
  - path: /etc/apt/apt.conf.d/80-proxy
    content: |
      Acquire::http::Proxy "http://proxy.ma-prod.cloud:3128";
      Acquire::https::Proxy "http://proxy.ma-prod.cloud:3128";
    permisions: '0444'
  - path: /etc/motd
    content: |
        █▀▀▄           ▄▀▀█
         █░░░▀▄ ▄▄▄▄▄ ▄▀░░░█
          ▀▄░░░▀░░░░░▀░░░▄▀
            ▌░▄▄░░░▄▄░▐▀▀
           ▐░░█▄░░░▄█░░▌▄▄▀▀▀▀█
           ▌▄▄▀▀░▄░▀▀▄▄▐░░░░░░█
        ▄▀▀▐▀▀░▄▄▄▄▄░▀▀▌▄▄▄░░░█
        █░░░▀▄░█░░░█░▄▀░░░░█▀▀▀
         ▀▄░░▀░░▀▀▀░░▀░░░▄█▀
           █░░░░░░░░░░░▄▀▄░▀▄
           █░░░░░░░░░▄▀█░░█░░█
           █░░░░░░░░░░░█▄█░░▄▀
           █░░░░░░░░░░░████▀
           ▀▄▄▀▀▄▄▀▀▄▄▄█▀
    permissions: '0444'

Note

  • L'utilisation du | après la clé content permet de saisir le contenu sur plusieurs lignes
  • Respecter l'indentation propre à YAML pour que le contenu soit interprété correctement

Installer des paquets🔗

Il est également possible, une fois l'instance créée de lui indiquer d'installer des paquets supplémentaires.

#cloud-config
package_update: true
packages:
  - htop
  - nload
  - iperf3
  - mtr-tiny
  - tmux

Exécuter une commande🔗

Cela va lancer une suite de commandes exécutées une unique fois.

#cloud-config
runcmd:
  - mkdir /tmp/fromage
  - echo roquefort > /tmp/fromage/miam

Ajouter une clé SSH suplémentaire🔗

Openstack ne permettant l'ajout que d'une seule clef SSH au déploiement de l'instance, il est possible d'ajouter des clefs supplémentaires avec cloud-init:

#cloud-config
ssh_authorized_keys:
  - ssh-rsa XXXXXX brane@My_computer

Depuis Brane (WIP)🔗

Depuis la CLI🔗

Il suffit d'ajouter l'argument --user-data lors de la création de l'instance et de préciser le fichier de configuration cloud-init:

openstack server create --image debian-10-amd64 --network my_network  --flavor nova-perf1.xsmall  --user-data ./config-cloud-init.yaml instance-cloud-init

Références🔗