Pour lancer le réseau de test de Duniter V2S ou bien pour créer un point d’entrée fiable avec les indexeurs de type subsquid, ou pour d’autres besoins, nous devons créer un cluster de machines.
Avant d’utiliser un cluster fait de machines physiques ou de VPS pour la phase de production, on doit pouvoir créer et détruire rapidement un cluster de machine virtuelles.
Je viens de le faire sur une machine « headless » en utilisant un rôle Ansible dédié à cette tâche :
Ce dépôt est un exemple bien documenté à modifier.
Il nécessite python3
et ansible
installé. Il installe automatiquement le rôle Ansible dans le dossier dédié via un git clone
. Il utilise le trio libvirt / kvm / qemu
.
Par défaut, l’hôte kvm qui héberge les VMs est la machine locale qui lance le Ansible.
Pou ma part, j’ai modifier inventory/kvmhost.yml
pour créer le cluster sur une machine dédiée via ssh :
kvmhost:
hosts:
## Put your KVM host connection and settings here
# localhost:
# ansible_connection: local
192.168.1.103:
ansible_connection: ssh
J’ai ensuite créé un fichier « inventory » pour mon cluster dans inventory/cluster.yml
:
---
## YAML based inventory, see:
## https://docs.ansible.com/ansible/latest/plugins/inventory/yaml.html
#
## Simple example using defaults to spin up 3 CentOS guests
## This is on multiple KVM hosts, see kvmhost.yml
cluster:
hosts:
cluster-debian-10-[1:3]:
virt_infra_state: running
virt_infra_distro: debian
virt_infra_distro_image: debian-10-openstack-amd64.qcow2
virt_infra_distro_image_url: http://cdimage.debian.org/cdimage/openstack/current-10/debian-10-openstack-amd64.qcow2
virt_infra_distro_image_checksum_url: http://cdimage.debian.org/cdimage/openstack/current-10/SHA512SUMS
virt_infra_variant: debiantesting
# virt_infra_disk_cmd:
# - apt-get update
# - apt-get install -y netselect-apt
# - netselect-apt -n -o /etc/apt/sources.list
vars:
ansible_python_interpreter: /usr/libexec/platform-python
Pour lancer la recette, taper à la racine du dépôt :
./run.sh --limit kvmhost,cluster
Une erreur signalera de télécharger l’image disque de la distribution des VMs dans le dossier dédié sur l’hôte. Le second lancement devrait fonctionner et lancer 3 VMs.
Si vous êtes intéressé à contribuer à l’infra de dev du projet, pouvez-vous essayer cette recette Ansible ?