Paramétrer vos vm avec Packer
La suite logique après la construction d’une image avec packer, c’est de mettre au point cloud-init pour paramétrer vos vms lors des instanciations dans votre cluster. Même si cloud-init se destine à la base au déploiement de machines virtuelles dans le cloud, on peut tout à fait le mettre en œuvre dans un contexte local. Avant je ferais un rappel sur l’installation de kvm.
Définition de l’image de base
Vous pouvez soit utiliser l’image de cloud générique de CentOS ↗, soit utilisé votre propre image créée avec packer qui devra juste contenir cloud-init pour que cela fonctionne.
Installation et Configuration de kvm
Tout d’abord, installez KVM et divers outils :
Rebooter votre machine et contrôler que tout fonctionne avec cette commande :
Interface par défaut
Par défaut, KVM crée un commutateur virtuel qui apparaît comme une interface hôte nommée «virbr0» à l’aide de 192.168.122.0/24.
Vous devriez voir cette interface :
Cette interface fonctionne en mode NAT, ce qui permet au système d’exploitation invité de communiquer, mais autorise uniquement l’hôte (et les VM de son sous-réseau) à établir des connexions entrantes. On doit juste le démarrer :
Pool de stockage
Le pool de stockage «par défaut» utilisé pour le stockage des vm se trouve dans le répertoire /var/lib/libvirt/images. Cela peux convenir pour de simples tests. Vous pouvez en créer un nouveau dans un répertoire où vous aurez plus de place. Dans les commandes ci-dessous configurer le répertoire de votre choix :
Commandes base pour gérer des images kvm
Création d’une vm de base
À partir de l’image téléchargé tout à l’heure :
La commande pour lister les vm :
Destruction des vms
Il suffit de taper les commandes suivantes :
Voilà tout est en place.
Création de votre premier fichier cloud-init
Installation des prérequis
Nous avons besoin de quelques packages pour créer l’image iso qui sera utilisé pour stocker le paramétrage de cloud-init.
Changement du mot de passe root d’une image Centos
On va changer le mot de passe root de notre image kvm juste pour pouvoir debugger si cela ne fonctionne pas.
Dans la ligne root:!!:
changer les !! par le mot de passe généré précédemment.
Sauvegarder et quitter
Augmentation de la la taille de l’image kvm
On va aussi augmenter sa taille à 10G:
Ecriture du premier fichier cloud-init
Un fichier cloud-init est un fichier au format yaml dont les valeurs sont décrites à cette adresse :
Voici un exemple permettant de :
- changer le nom de la vm
- créer un user centos
- copier votre clé
<sshPUBKEY>
dans les machines autorisées à se connecter
Collez-y ceci:
et un fichier meta_data :
Génération de l’image iso cloud-init
Lancement de notre première vm paramétré avec cloud-init
Lancons notre première vm :
Pour se connecter on lance la commande suivante :
Entrer le user root avec le mot de passe password. On peut tout de suite vérifier le résultat dans le fichier /var/log/cloud-init.log
Récupération de l’adresse IP
Bon on arrive à se connecter à notre vm via les outils, mais comment se connecter via ssh. En premier on récupère l’adresse MAC puis l’adresse ip :
La suite
Pour aller plus loin dans la configuration, comme gérer les disques, je vous conseille d’aller sur le site de la documentation cloud-init ↗ et en particulier la partie modules ↗.