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_mode ou vm.cpu_mode est 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 present pour créer ou absent pour 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 None si libvirt_vm_engine est kvm, sinon pc-1.0.

    • cpu_mode : mode CPU de la machine virtuelle. Par défaut, c'est host-passthrough si libvirt_vm_engine est 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 file doit être placée ; par défaut, c'est libvirt_volume_default_images_path.
      • device : disk ou 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 virsh pour 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).
      • image et backing_image sont 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 type d'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 type d'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, private et passthrough. Voir man virsh pour 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.j2 afin 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

À propos du projet

Role to configure and create VMs on a Libvirt/KVM hypervisor

Installer
ansible-galaxy install t2d.ansible_role_libvirt_vm
Licence
Unknown
Téléchargements
83
Propriétaire