Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Créer une nouvelle VM

Pour le reste de ce document, on suppose que la VM que l'on veut créer s'appelle bleuet.

Inventaire

Hôte

On commence par créer un dossier bleuet_vm dans host_vars. Le fichier vars.yml contient :

# Derniers chiffres de l'IP désirée
ip = XX
# Mot de passe de l'utilisateur paquerette
vm_admin_password = {{ vault_vm_admin_password }}

L'IP est choisie sur l'hyperviseur en connaissance des autres IP existantes. Il s'agit bien d'une IP sur le réseau privé; la connexion SSH passera par un jump sur l'hyperviseur.

ℹ️ L'hôte réel pour s'y connecter depuis Ansible sera défini au niveau des variables du groupe.

Créer le vault pour y mettre le mot de passe :

ansible-vault edit hosts/host_vars/bleuet_vm/vault.yml

⚠️ Référencer le mot de passe dans le VW, coffre paquerette_admin_sys, collection vm.

Groupe

Dans hosts/10-machines, créer un groupe bleuet qui référence l'hôte :

[bleuet]
bleuet_vm

Ce groupe référencera tous les hôtes de type service qui s'exécuteront sur la VM.

Ajouter une variable de groupe dans hosts/group_vars/bleuet/vars.yml :

ansible_host: bleuet

Ainsi les services savent où s'installer.

⚠️ Par défaut, les VM sont sur un réseau privé et sont accédées par un reverse-proxy. Les services peuvent alors supposer qu'elles ne gèrent pas e.g. les terminaisons TLS. Dans le cas contraire, on ajoutera la variable suivante :

behind_reverse_proxy: false

Dans hosts/50-servers, modifier le groupe dX_vms, X étant le numéro donné à l'hyperviseur. Exemple :

d3_vms:
  children:
    bleuet:
    [...]

En d'autres termes, tous les hôtes du groupe bleuet (services + la VM) bénéficient des variables du groupe d3_vms.

Ajouter l'hôte de la VM au groupe proxmox_dX. Exemple :

proxmox_d3:
  hosts:
    bleuet_vm:

Création de la VM

Prérequis

Sur l'hyperviseur, vérifier que proxmoxer est au moins en version 2 et installé globalement.

sudo pip3 install --break-system-packages 'proxmoxer>=2.0.0' --upgrade

Création

Lancer le playbook de création de VM en limitant à l'hôte de la VM.

ansible-playbook playbook/vm/create.yml --limit bleuet_vm

À la fin, le playbook affiche le vmid de la VM. L'ajouter dans les variables du groupe. Exemple :

vmid: 122

Cela permet notamment à tous les services du groupe de créer leur disque et de l'attacher à la VM. Attendre le démarrage et confirmer que la connexion SSH fonctionne avec la commande :

# IP et jump dans la configuration SSH de la tower
ssh bleuet

Configuration de la VM

Cette étape installe notamment le pare-feu en autorisant seulement SSH, ZRAM (compression de la RAM), reaction (actions par matching des logs), Rustic (backups), l'agent Zabbix (métriques) et des paquets libres.

La liste des paquets à installer peut être étendue avant configuration dans les variables de l'hôte, par exemple :

dependencies = {{ dependencies + additionnal_packages }}
additionnal_packages:
 - sl

Lancer le playbook de configuration :

ansible-playbook playbooks/vm/configure.yml --limit bleuet_vm