Introduction à Cloud-init

Qu’est ce que Cloud-init ?

Cloud-init est un outil de templating, et d’Infra-as-Code qui va permettre de réaliser une série d’opérations au moment du premier démarrage d’un serveur (VM). Cela permet de personnaliser les VMs lors de leur déploiement et de garantir l’homogénéité de leur configuration initiale.

Si Cloud-init est développé par Canonical (l’éditeur d’Ubuntu), c’est aujourd’hui un standard, utilisé très largement dans la gestion d’infrastructures et supporté par un grand nombre de distributions (Ubuntu, Debian, Arch Linux, Fedora, …)
Pour utiliser cloud init sur un serveur, il faut que l’image de celui-ci soit typée “cloud”.
Un script Cloud-init va se jouer juste après l’installation, ca va permettre d’aller immédiatement introduire des éléments de sécurité.

Créer un serveur et lancer un script Cloud-init via le CLI Openstack

La plupart des Cloud providers proposent dans leurs interfaces de création de serveur d’ajouter directement un script Cloud-init.

Si vous utilisez un Cloud provider qui s’appuie sur OpenStack (comme Gandi.net !), vous pouvez simplement utiliser la CLI OpenStack pour créer un serveur et lui passer un script Cloud-init à jouer lors du démarrage de la VM. Il suffit d’insérer `user-data nom-fichier-cloudinit` dans la commande de création de serveur.

La commande suivante lance la création d’un serveur GandiCloud VPS V-R1, avec une image Ubuntu, et lui passe le script `cloud-init.yaml` qui sera exécuté au lancement de la VM.

openstack server create --flavor V-R1 --image 47edd0a0-23ce-4ce5-9168-36de68990d1b --boot-from-volume 10 --key-name <nom_de_ma_cle_ssh> --user-data cloud-init.yaml <nom_de_ma_vm>

Un exemple basique de script Cloud-init : création d’un utilisateur et installation de deux paquets

Le script suivant va installer `tmux` et `vim` et créer un nouvel utilisateur `mael`, qui aura les droits sudo au démarrage de la VM.

#cloud-config
packages: 
  - tmux 
  - vim
users:
  - default 
  - name: mael
    groups: sudo 
    homedir: "/home/maeldir" 
    sudo: ['ALL=(ALL) NOPASSWD:ALL']


Mon Script cloud-init perso

J’ai déposé sur mon espace Github, le script que j’utilise aujourd’hui sur les VMs que je crées régulièrement pour mes tests ou besoins perso.

https://github.com/MaelDre/Boataoots/tree/main/cloud-init

Liens utiles

Et enfin quelques liens utiles pour débuter avec Cloud-init:

Commentaires