Aller au contenu

Création d'une instance incus avec cloud-init

Pour vérifier le bon fonctionnement d’un rôle ansible, j’ai besoin de le tester sur plusieurs instances avec Molecule. Il me faut pour aboutir un serveur SSH un utilisateur sudo qui autorise la connexion SSH avec ma clef publique et enfin quelques paquets manquants. Plutôt que de créer un modèle par distribution Linux et répéter l’opération à chaque nouvelle sortie de version, je vais utiliser un profil Incus avec cloud-init pour déployer la même configuration partout.

Pour se faire, nous devons déjà avoir configuré Incus.

Pour créer et éditer le profil molecule, on lance :

Fenêtre de terminal
incus profile create molecule
incus profile edit molecule

Dans la fenêtre d’édition du profil :

### This is a YAML representation of the profile.
### Any line starting with a '# will be ignored.
###
### A profile consists of a set of configuration items followed by a set of
### devices.
###
### An example would look like:
### name: onenic
### config:
### raw.lxc: lxc.aa_profile=unconfined
### devices:
### eth0:
### nictype: bridged
### parent: mybr0
### type: nic
###
### Note that the name is shown but cannot be changed
config:
cloud-init.user-data: |
#cloud-config
package_upgrade: true
packages:
- acl
- openssh-server
- python3-apt
users:
- name: ansible
groups: sudo
sudo: ALL=(ALL) NOPASSWD:ALL
shell: /bin/bash
ssh_authorized_keys:
- ssh-ed25519 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXX
description: ""
devices: {}
name: molecule
used_by: []

Dans l’ordre package_upgrade met à jour les paquets Apt, puis packages installe les paquets choisis, enfin un utilisateur est créé avec son nom ansible, son groupe sudo, le configure sans mots de passe et prend une clef ssh publique pour la connexion. Vous pouvez trouver d’autres références pour configurer le fichier dans la [documentation officielle(https://cloudinit.readthedocs.io/en/latest/reference/modules.html)].

Une fois configuré vous pouvez lancer un : incus launch images:debian/trixie/cloud test-cloud-init --profile default --profile molecule