# Mettre en place un cluster de VMs avec Ansible

**URL:** https://forum.duniter.org/t/mettre-en-place-un-cluster-de-vms-avec-ansible/9263
**Category:** R&D
**Tags:** python, ansible, cluster, kvm, qemu
**Created:** [20 April 2022 15:12 UTC](https://forum.duniter.org/t/mettre-en-place-un-cluster-de-vms-avec-ansible/9263 "2022-04-20T15:12:40Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![vit](https://forum.duniter.org/user_avatar/forum.duniter.org/vit/32/2775_2.png) [@vit](https://forum.duniter.org/u/vit)
#### Post date: [20 April 2022 15:12 UTC](https://forum.duniter.org/t/mettre-en-place-un-cluster-de-vms-avec-ansible/9263/1 "2022-04-20T15:12:41Z")

</div>

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 «&nbsp;headless&nbsp;» en utilisant un rôle Ansible dédié à cette tâche :

> **[GitHub - csmart/virt-infra-ansible: An example Ansible playbook for my...](https://github.com/csmart/virt-infra-ansible)**
>
> An example Ansible playbook for my virt-infra Ansible role. - GitHub - csmart/virt-infra-ansible: An example Ansible playbook for my virt-infra Ansible role.

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 :

```nohighlight
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 «&nbsp;inventory&nbsp;» pour mon cluster dans `inventory/cluster.yml` :

```nohighlight
---
## 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 ?

---

<div class="post-metadata">

### Author: ![Pini](https://forum.duniter.org/user_avatar/forum.duniter.org/pini/32/6819_2.png) [@Pini](https://forum.duniter.org/u/Pini)
#### Post date: [7 May 2022 19:46 UTC](https://forum.duniter.org/t/mettre-en-place-un-cluster-de-vms-avec-ansible/9263/2 "2022-05-07T19:46:55Z")

</div>

J’ai pu faire le test maintenant que j’ai recyclé une vieille bécane qui ne servait plus. Ça marche comme tu le décris.
