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 :
incus profile create moleculeincus profile edit moleculeDans 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 XXXXXXXXXXXXXdescription: ""devices: {}name: moleculeused_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