serverbee.virt_guest_manage

Rôle de gestion des machines virtuelles

Ce rôle utilise le module virt ansible officiel pour gérer les machines virtuelles basées sur RHEL en utilisant KVM comme hyperviseur. Par défaut, il utilise le fork AlmaLinux de RHEL. Vous pouvez contrôler toutes vos machines virtuelles directement via les paramètres dans group_vars ou host_vars. La principale caractéristique de ce rôle est l'installation parallèle de toutes les machines virtuelles définies dans virt_guest_list.

Pour commencer

Versions des distributions prises en charge au niveau de la machine virtuelle
  • CentOS el6 (non testé avec les dernières versions du rôle)
  • CentOS el7
  • AlmaLinux el8
  • AlmaLinux el9
Mise à jour des valeurs par défaut selon vos besoins

Tout d'abord, vous devez mettre à jour virt_guest_init_passwd en définissant un mot de passe personnalisé. Deuxièmement, vous devez trouver et définir le miroir le plus proche pour télécharger tous les composants de l'installateur basé sur RHEL.

En dehors du périmètre de ce rôle

Ce rôle peut gérer les disques virtuels basés sur LVM pour les machines virtuelles, mais vous devez créer un Volume Physique (PVS) et un Groupe de Volumes (VGS) avant de l'utiliser. Il existe également deux options pour les interfaces réseau virtuelles des machines virtuelles. La première consiste à utiliser un pont Linux existant et déjà configuré, et la deuxième à utiliser le réseau libvirt. De toute façon, la dernière option peut être gérée avec virt_network_list directement depuis ce rôle.

Variables

Général
  • virt_guest_dependency_qemu_kvm_role: [optionnel, par défaut true]: Activer ou non un rôle de dépendance pour qemu-kvm
  • virt_guest_mirror: [par défaut: http://repo.almalinux.org]: Miroir AlmaLinux utilisé pour installer le système d'exploitation
  • virt_guest_os_location: [par défaut: {{ virt_guest_mirror }}/almalinux/9/BaseOS/x86_64/os]: Chemin d'emplacement où se trouvent les composants du système d'exploitation AlmaLinux
  • virt_guest_kickstart_config_dir: [par défaut: /tmp/kickstart]: Chemin où les fichiers kickstart seront créés
  • virt_guest_kickstart_config_port: [par défaut: 8000]: Port pour télécharger la configuration kickstart pendant l'installation
  • virt_guest_kickstart_config_url: [par défaut: ip de l'hyperviseur]: URL pour télécharger la configuration kickstart pendant l'installation
  • virt_guest_kickstart_config_serve_timeout: [par défaut: 90]: Temps en secondes pour servir les fichiers kickstart
  • virt_guest_kickstart_installation_timeout: [par défaut: 480]: Temps en secondes pour terminer une installation kickstart
  • virt_guest_init_passwd: [ requis]: Mot de passe de l'utilisateur root que vous utiliserez pour la première connexion
  • virt_guest_init_hostname: [par défaut: fresh-installed.local]: Le premier nom d'hôte au niveau du système d'exploitation de la machine virtuelle
Liste des réseaux virtuels et ses propres paramètres
  • virt_network_list: [requis, par défaut: {}]: Déclarations de réseau virtuel
  • virt_network_list.key: [requis]: Nom du réseau virtuel (par exemple, br-nat0:)
  • virt_network_list.key.router: [requis]: Adresse IP du routeur virtuel (par exemple, 192.168.2.1)
  • virt_network_list.key.netmask: [requis]: Masque de réseau du réseau virtuel (par exemple, 255.255.255.0)
  • virt_network_list.key.start: [requis]: Première adresse IP de la plage du réseau virtuel (par exemple, 192.168.2.1)
  • virt_network_list.key.end: [requis]: Dernière adresse IP de la plage du réseau virtuel (par exemple, 192.168.2.254)
Liste des machines virtuelles et ses propres paramètres
  • virt_guest_list: [requis, par défaut: {}]: Déclarations des invités virtuels
  • virt_guest_list.key: [requis]: Nom de la machine virtuelle (par exemple, example-vm:)
  • virt_guest_list.key.autostart: [optionnel, par défaut true]: Activer ou non le démarrage automatique de la machine virtuelle
  • virt_guest_list.key.uuid: [requis]: Identifiant unique universel de la machine virtuelle (par exemple, ad852ffe-07d9-43ec-9f5a-ced644f9a7a5)
  • virt_guest_list.key.cpu: [optionnel, par défaut 1]: Définir les limites de cœurs de CPU
  • virt_guest_list.key.ram: [optionnel, par défaut 2]: Définir les limites de RAM. Cette valeur est en GiB
  • virt_guest_list.key.disk: [requis]: Déclarations du ou des disques de l'invité virtuel
  • virt_guest_list.key.disk.[s|v]d[a-z]: [requis]: Nom du disque virtuel dans la machine virtuelle (par exemple, sda, sdb, sdc, etc. ou vda, vdb, vdc, etc.)
  • virt_guest_list.key.disk.[s|v]d[a-z].type: [optionnel, par défaut block]: Type de disque virtuel (par exemple, block, file)
  • virt_guest_list.key.disk.[s|v]d[a-z].name: [requis uniquement pour .type: file]: Nom du fichier de disque virtuel qemu
  • virt_guest_list.key.disk.[s|v]d[a-z].format: [optionnel, par défaut raw]: Type de format qemu du disque virtuel (par exemple, raw, qcow2)
  • virt_guest_list.key.disk.[s|v]d[a-z].format_options: [optionnel, par défaut preallocation=off]: Options de format du disque qemu (par exemple, preallocation=metadata)
  • virt_guest_list.key.disk.[s|v]d[a-z].vg: [requis uniquement pour .type: block]: Nom du groupe de volumes LVM
  • virt_guest_list.key.disk.[s|v]d[a-z].lv: [requis uniquement pour .type: block]: Nom du volume logique LVM
  • virt_guest_list.key.disk.[s|v]d[a-z].size: [requis, sauf en cas d'utilisation de disques physiques]: Taille du disque virtuel (par exemple, 2048M,10G, 1T, aussi 20%VG ou tout équivalent peut être utilisé pour les disques basés sur LVM)
  • virt_guest_list.key.disk.[s|v]d[a-z].device: [requis uniquement pour les disques physiques]: Chemin complet vers le disque physique sur un hyperviseur (par exemple, /dev/sdb, /dev/nvme0n1, etc.)
  • virt_guest_list.key.disk.[s|v]da.fstype: [optionnel, par défaut xfs]: Type de système de fichiers pour toutes les partitions à l'intérieur d'un disque virtuel (par exemple, ext4, ext3, etc.)
  • virt_guest_list.key.network: [requis]: Déclarations du ou des réseaux de l'invité virtuel
  • virt_guest_list.key.network.eth[0-9]: [requis]: Nom de l'interface réseau dans la machine virtuelle (par exemple, eth0, eth1, etc.)
  • virt_guest_list.key.network.eth[0-9].mac: [requis]: Adresse MAC de l'interface réseau virtuelle (par exemple, 52:54:00:16:01:bc, etc.)
  • virt_guest_list.key.network.eth[0-9].bridge: [requis]: Nom de l'interface de pont dans laquelle l'interface vnet sera incluse (par exemple, br0, bridge1, etc.)
  • virt_guest_list.key.network.eth[0-9].model: [optionnel, par défaut virtio]: Le modèle qemu de l'interface réseau virtuelle (par exemple, virtio, e1000, rtl8139, etc.)
  • virt_guest_list.key.network.eth0.ip: [optionnel]: Adresse IP statique pour l'interface réseau principale
  • virt_guest_list.key.network.eth0.netmask: [optionnel]: Masque de réseau pour l'interface réseau principale
  • virt_guest_list.key.network.eth0.gateway: [optionnel]: Adresse IP de la passerelle pour l'interface réseau principale
  • virt_guest_list.key.network.eth0.dns: [optionnel]: Serveur DNS principal. Cette option ne prend en charge qu'un seul serveur DNS.
  • virt_guest_list.key.vnc_enable: [optionnel, par défaut false]: Activer le serveur VNC du côté qemu-kvm pour accéder à une machine virtuelle

Dépendances

Rôle serverbee.qemu_kvm

Exemple(s)

Exemple simple
---
- hosts: localhost 
  roles:
    - serverbee.virt_guest_manage
  vars:
    virt_guest_list:
      example-vm:
        uuid: 7eb09567-83b8-4aab-916e-24924d6a0f89
        disk:
          sda:
            vg: vg_local
            lv: lv_vm_example
            size: 10G
        network:
          eth0:
            mac: 52:54:00:16:01:bc
            bridge: br0
Exemple complet avec toutes les options
---
- hosts: localhost 
  roles:
    - serverbee.virt_guest_manage
  vars:
    virt_network_list:
      br-nat0:
        router: 192.168.2.1
        netmask: 255.255.255.0
        start: 192.168.2.2
        end: 192.168.2.254

    virt_guest_list:
      example-vm:
        autostart: false
        uuid: 7eb09567-83b8-4aab-916e-24924d6a0f89
        cpu: 2 # Cœurs
        ram: 4 # GiB
        disk:
          sda:
            type: block
            format: raw
            vg: vg_local
            lv: lv_vm_example-first
            size: 20%VG
            fstype: ext4
          vdb:
            type: file
            format: qcow2
            format_options: preallocation=metadata
            name: example-second-drive
            size: 5G
          sdc:
            device: /dev/nvme0n1
        network:
          eth0:
            mac: 52:54:00:16:01:bc
            bridge: br0
            model: virtio
            ip: 172.16.2.2
            netmask: 255.255.255.248
            gateway: 172.16.2.1
            dns: 172.16.2.1
          eth1:
            mac: 52:54:00:16:02:ba
            network: br-nat0
            model: e1000
        vnc_enable: true

Quoi d'autre ?

Vérification de l'avancement de l'installation de la VM

Tout d'abord, vous pouvez vérifier si votre VM répond aux requêtes ping. Si elle ne répond pas, vous pouvez utiliser l'outil en ligne de commande virsh pour voir la liste de toutes vos VMs et vérifier l'avancement de chaque installation. La commande Virsh s'installe automatiquement comme dépendance pour ce rôle. Vous pouvez surveiller avec l'option console:

$ virsh list --all
$ virsh console example-vm
Délai d'expiration pour terminer l'installation

Il existe une variable nommée virt_guest_kickstart_installation_timeout qui est par défaut fixée à 480 secondes. Si vous rencontrez des problèmes pour arrêter votre VM avant la fin de son installation, vous devez augmenter le délai d'expiration. Il est également préférable de définir le miroir le plus proche, au moins dans le même pays que votre hébergeur, pour augmenter la vitesse de téléchargement. Vous pouvez le faire en modifiant les variables virt_guest_mirror et virt_guest_os_location.

Extra vars pour gérer une seule VM

Cette option peut être très utile si vous avez de nombreuses machines virtuelles, mais que vous souhaitez en gérer uniquement une. Cela exécutera le playbook Ansible plus rapidement et sans appliquer certaines choses à d'autres machines virtuelles. Pour cela, vous devez définir une variable supplémentaire appelée vm lorsque vous appliquez votre playbook:

$ ansible-playbook virt-guest-manage.yml --extra-vars vm=example-vm

Cela prend en charge uniquement un nom de machine virtuelle à la fois.

Réexécution d'une installation de VM

Si vous avez fait des essais avant et souhaitez relancer une installation, vous devez d'abord supprimer toutes les parties existantes manuellement:

$ virsh list --all
$ virsh destroy example-vm
$ virsh undefine example-vm
$ lvremove vg_local/lv_vm_example

Ce rôle ne prend pas en charge la réinstallation automatique des VMs afin d'éviter la suppression de données existantes et nécessaires.

Licence

Licence GPLv3

Informations sur l'auteur

Vitaly Yakovenko

À propos du projet

Role to install and manage KVM VMs.

Installer
ansible-galaxy install serverbee.virt_guest_manage
Licence
Unknown
Téléchargements
76
Propriétaire