t2d.ansible_role_libvirt_vm
Libvirt VM
Ce rôle configure et crée (ou détruit) des VMs sur un hyperviseur KVM.
Exigences
L'hôte doit avoir la technologie de virtualisation (VT) activée et doit être préconfiguré avec libvirt/KVM.
Variables du Rôle
- libvirt_vm_default_console_log_dir: Le répertoire par défaut dans lequel stocker les journaux de console de la VM, si un chemin spécifique au journal de la VM n'est pas fourni. Par défaut, c'est "/var/log/libvirt/qemu/".
- libvirt_vm_image_cache_path: Le répertoire dans lequel les images téléchargées sont mises en cache. Par défaut, c'est "/tmp/".
- libvirt_volume_default_images_path: Répertoire dans lequel les images des instances sont stockées. Par défaut, c'est '/var/lib/libvirt/images'.
- libvirt_volume_default_type: Quel type de volume de support utilise l'instance ? Par défaut, c'est- volume.
- libvirt_volume_default_format: Format pour les volumes créés par le rôle, par défaut c'est- qcow2.
- libvirt_volume_default_device: Contrôle comment le dispositif apparaît dans le système d'exploitation invité. Par défaut, c'est- disk.
- libvirt_vm_engine: moteur de virtualisation. Si non défini, le rôle tentera de détecter automatiquement le moteur optimal à utiliser.
- libvirt_vm_emulator: chemin vers le binaire de l'émulateur. Si non défini, le rôle tentera de détecter automatiquement l'émulateur correct à utiliser.
- libvirt_cpu_mode_default: Le mode CPU par défaut si- libvirt_cpu_modeou- vm.cpu_modeest indéfini.
- libvirt_vm_arch: architecture CPU, par défaut c'est- x86_64.
- libvirt_vm_uri: Surcharge l'URI de connexion de libvirt. Voir la documentation de libvirt pour plus de détails.
- libvirt_vm_virsh_default_env: Les variables contenues dans ce dictionnaire sont ajoutées à l'environnement utilisé lors de l'exécution des commandes virsh.
- libvirt_vm_clock_offset: Si défini, le décalage de l'horloge des instances est réglé sur la valeur fournie. Lorsque non défini, la synchronisation est réglée sur- localtime.
- libvirt_vms: liste des VMs à créer ou détruire. Chacune peut avoir les attributs suivants :- state: défini sur- presentpour créer ou- absentpour détruire la VM. Par défaut, c'est- present.
- name: le nom à attribuer à la VM.
- memory_mb: la mémoire à attribuer à la VM, en mégaoctets.
- vcpus: le nombre de cœurs de VCPU à attribuer à la VM.
- machine: type de machine virtuelle. Par défaut, c'est- Nonesi- libvirt_vm_engineest- kvm, sinon- pc-1.0.
- cpu_mode: mode CPU de la machine virtuelle. Par défaut, c'est- host-passthroughsi- libvirt_vm_engineest- kvm, sinon- host-model. Peut être défini sur aucun pour ne pas configurer de mode CPU.
- clock_offset: Surcharge la valeur par défaut définie dans- libvirt_vm_clock_offset.
- enable_vnc: Si vrai, active l'écoute VNC sur localhost pour utilisation avec VirtManager et des outils similaires.
- volumes: une liste de volumes à attacher à la VM. Chaque volume est défini par le dictionnaire suivant :- pool: Nom ou UUID du pool de stockage à partir duquel le volume doit être alloué.
- name: Nom à associer au volume créé ; pour les volumes de type- file, inclure l'extension si vous souhaitez que les volumes soient créés avec celle-ci.
- file_path: Emplacement où l'image des volumes de type- filedoit être placée ; par défaut, c'est- libvirt_volume_default_images_path.
- device:- diskou- cdrom.
- capacity: capacité du volume (peut être suffixée par M,G,T ou MB,GB,TB, etc.) (requise lorsque le type est- disk).
- format: options comprennent- raw,- qcow2,- vmdk. Voir- man virshpour la gamme complète. Par défaut, c'est- qcow2.
- image: (optionnel) une URL vers une image avec laquelle le volume est initialisé (copie complète).
- backing_image: (optionnel) nom du volume de support qui doit déjà être dans le même pool (copy-on-write).
- imageet- backing_imagesont des options mutuellement exclusives.
- target: (optionnel) Influence manuellement le type et l'ordre des volumes.
 
- interfaces: une liste d'interfaces réseau à attacher à la VM. Chaque interface réseau est définie par le dictionnaire suivant :- type: Le type de l'interface. Valeurs possibles :- network: Attache l'interface à un réseau virtuel Libvirt nommé. C'est la valeur par défaut.
- direct: Attache directement l'interface à l'une des interfaces physiques de l'hôte, en utilisant le pilote- macvtap.
 
- network: Nom du réseau auquel une interface doit être attachée. Doit être spécifié si et seulement si le- typed'interface est- network.
- mac: adresse "matérielle" de l'instance virtuelle, si absente, une adresse est créée.
- source: Un dictionnaire définissant l'interface hôte à laquelle cette interface VM doit être attachée. Doit être spécifié si et seulement si le- typed'interface est- direct. Comprend les attributs suivants :- dev: Le nom de l'interface hôte à laquelle cette interface VM doit être attachée.
- mode: options comprennent- vepa,- bridge,- privateet- passthrough. Voir- man virshpour plus de détails. Par défaut, c'est- vepa.
 
 
- console_log_enabled: si- true, enregistre la sortie de la console dans un fichier au chemin spécifié par- console_log_path, au lieu de sur un PTY. Si- false, la sortie terminale est dirigée vers un PTY au port série 0. Par défaut, c'est- false.
- console_log_path: Chemin vers le fichier de journal de console. Par défaut, c'est- {{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log.
- start: Indique s'il faut immédiatement démarrer la VM après l'avoir définie. Par défaut, c'est- true.
- autostart: Indique s'il faut démarrer la VM lorsque l'hôte démarre. Par défaut, c'est- true.
- xml_file: Optionnellement fournir un modèle XML modifié. Basez la personnalisation sur le modèle par défaut- vm.xml.j2afin d'inclure les expressions jinja attendues que le rôle utilise.
 
N.B. Les variables suivantes sont dépréciées : libvirt_vm_state, libvirt_vm_name, libvirt_vm_memory_mb, libvirt_vm_vcpus, libvirt_vm_engine, libvirt_vm_machine, libvirt_vm_cpu_mode, libvirt_vm_volumes, libvirt_vm_interfaces et libvirt_vm_console_log_path. Si la variable libvirt_vms est laissée non définie, sa valeur par défaut sera une liste singleton contenant une spécification de VM utilisant ces variables dépréciées.
Dépendances
Si vous utilisez des disques au format qcow2, qemu-img (dans le package qemu-utils) est requis.
Exemple de Playbook
---
- name: Créer des VMs
  hosts: hyperviseur
  roles:
    - role: stackhpc.libvirt-vm
      libvirt_vms:
        - state: present
          name: 'vm1'
          memory_mb: 512
          vcpus: 2
          volumes:
            - name: 'data1'
              device: 'disk'
              format: 'qcow2'
              capacity: '400GB'
              pool: 'my-pool'
            - name: 'debian-10.2.0-amd64-netinst.iso'
              type: 'file'
              device: 'cdrom'
              format: 'raw'
              target: 'hda'  # premier dispositif sur le bus ide
          interfaces:
            - network: 'br-datacentre'
        - state: present
          name: 'vm2'
          memory_mb: 1024
          vcpus: 1
          volumes:
            - name: 'data2'
              device: 'disk'
              format: 'qcow2'
              capacity: '200GB'
              pool: 'my-pool'
            - name: 'filestore'
              type: 'file'
              file_path: '/srv/cloud/images'
              capacity: '900GB'
          interfaces:
            - type: 'direct'
              source:
                dev: 'eth123'
                mode: 'private'
            - type: 'bridge'
              source:
                dev: 'br-datacentre'
Informations sur l'Auteur
- Mark Goddard (mark@stackhpc.com)
