t2d.ansible_role_libvirt_vm

Libvirt VM

Diese Rolle konfiguriert und erstellt (oder zerstört) VMs auf einem KVM-Hypervisor.

Anforderungen

Der Host sollte die Virtualisierungstechnologie (VT) aktiviert haben und sollte bereits mit libvirt/KVM vorkonfiguriert sein.

Rollenvariablen

  • libvirt_vm_default_console_log_dir: Das Standardverzeichnis, in dem die Konsolenausgaben der VMs gespeichert werden, falls kein VM-spezifischer Protokolldateipfad angegeben ist. Standard ist "/var/log/libvirt/qemu/".

  • libvirt_vm_image_cache_path: Das Verzeichnis, in dem heruntergeladene Images zwischengespeichert werden. Standard ist "/tmp/".

  • libvirt_volume_default_images_path: Verzeichnis, in dem Instanz-Images gespeichert werden. Standard ist '/var/lib/libvirt/images'.

  • libvirt_volume_default_type: Welchen Typ von Speichervolumen verwendet die Instanz? Standard ist volume.

  • libvirt_volume_default_format: Format für von der Rolle erstellte Volumen, Standard ist qcow2.

  • libvirt_volume_default_device: Steuert, wie das Gerät im Gastsystem erscheint. Standard ist disk.

  • libvirt_vm_engine: Virtualisierungsengine. Wenn nicht festgelegt, versucht die Rolle, die optimale Engine automatisch zu erkennen.

  • libvirt_vm_emulator: Pfad zur Emulator-Binärdatei. Wenn nicht festgelegt, versucht die Rolle, den richtigen Emulator automatisch zu erkennen.

  • libvirt_cpu_mode_default: Der Standard-CPU-Modus, wenn libvirt_cpu_mode oder vm.cpu_mode nicht definiert ist.

  • libvirt_vm_arch: CPU-Architektur, Standard ist x86_64.

  • libvirt_vm_uri: Überschreibt die libvirt-Verbindungs-URI. Weitere Details finden Sie in der libvirt-Dokumentation.

  • libvirt_vm_virsh_default_env: Variablen in diesem Dictionary werden zur Umgebung hinzugefügt, die beim Ausführen von virsh-Befehlen verwendet wird.

  • libvirt_vm_clock_offset: Wenn definiert, wird die Uhr des Instanz auf den angegebenen Wert gesetzt. Wenn undefiniert, wird die Synchronisation auf localtime gesetzt.

  • libvirt_vms: Liste von zu erstellenden/zerstörenden VMs. Jede VM kann die folgenden Attribute haben:

    • state: auf present setzen, um die VM zu erstellen, oder auf absent, um die VM zu zerstören. Standard ist present.

    • name: Der Name, der der VM zugewiesen werden soll.

    • memory_mb: Der Arbeitsspeicher, der der VM zugewiesen wird, in Megabyte.

    • vcpus: Die Anzahl der VCPU-Kerne, die der VM zugewiesen werden.

    • machine: Typ der virtuellen Maschine. Standard ist None, wenn libvirt_vm_engine kvm ist, andernfalls pc-1.0.

    • cpu_mode: CPU-Modus der virtuellen Maschine. Standard ist host-passthrough, wenn libvirt_vm_engine kvm ist, andernfalls host-model. Kann auf none gesetzt werden, um keinen CPU-Modus zu konfigurieren.

    • clock_offset: Überschreibt den Standardwert in libvirt_vm_clock_offset.

    • enable_vnc: Wenn true, aktiviert VNC-Listener auf localhost für die Verwendung mit VirtManager und ähnlichen Tools.

    • volumes: Eine Liste von Volumen, die an die VM angeschlossen werden. Jeden Volume wird mit dem folgenden Dictionary definiert:

      • pool: Name oder UUID des Speicherpools, aus dem das Volumen zugewiesen werden soll.
      • name: Name, der mit dem erstellten Volumen verknüpft werden soll; Bei file-Typ-Volumen die Erweiterung angeben, wenn gewünscht.
      • file_path: Wohin das Image von file-Typ-Volumen platziert werden soll; Standardmäßig libvirt_volume_default_images_path.
      • device: disk oder cdrom.
      • capacity: Volumenkapazität (kann mit M,G,T oder MB,GB,TB usw. ergänzt werden) (erforderlich, wenn der Typ disk ist).
      • format: Optionen sind raw, qcow2, vmdk. Weitere Details finden Sie in man virsh. Standard ist qcow2.
      • image: (optional) Eine URL zu einem Image, mit dem das Volumen initialisiert wird (vollständige Kopie).
      • backing_image: (optional) Name des zugrunde liegenden Volumens, das im selben Pool angenommen wird (Copy-on-Write).
      • image und backing_image sind gegenseitig ausschließende Optionen.
      • target: (optional) Beeinflusst manuell den Typ und die Reihenfolge der Volumen.
    • interfaces: Eine Liste von Netzwerk-Schnittstellen, die an die VM angeschlossen werden. Jede Netzwerkschnittstelle wird mit dem folgenden Dictionary definiert:

      • type: Der Typ der Schnittstelle. Mögliche Werte:

        • network: Schließt die Schnittstelle an ein benanntes Libvirt virtuelles Netzwerk an. Dies ist der Standardwert.
        • direct: Schließt die Schnittstelle direkt an eine der physischen Schnittstellen des Hosts an, unter Verwendung des macvtap-Treiber.
      • network: Name des Netzwerks, an das eine Schnittstelle angeschlossen werden soll. Muss angegeben werden, wenn der Schnittstellentyp network ist.

      • mac: "Hardware"-Adresse der virtuellen Instanz, falls abwesend, wird eine erstellt.

      • source: Ein Dictionary, das die Host-Schnittstelle definiert, an die diese VM-Schnittstelle angeschlossen werden soll. Muss angegeben werden, wenn der Schnittstellentyp direct ist. Enthält die folgenden Attribute:

        • dev: Der Name der Host-Schnittstelle, an die diese VM-Schnittstelle angeschlossen werden soll.
        • mode: Optionen sind vepa, bridge, private und passthrough. Weitere Informationen finden Sie in man virsh. Standard ist vepa.
    • console_log_enabled: Wenn true, wird die Konsolenausgabe in eine Datei im angegebenen Pfad console_log_path protokolliert, anstatt an ein PTY. Wenn false, wird die direkte Terminalausgabe an ein PTY am seriellen Port 0 geleitet. Standard ist false.

    • console_log_path: Pfad zur Konsolenprotokolldatei. Standard ist {{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log.

    • start: Ob die VM sofort nach der Definition gestartet werden soll. Standard ist true.

    • autostart: Ob die VM beim Start des Hosts gestartet werden soll. Standard ist true.

    • xml_file: Optional eine modifizierte XML-Vorlage bereitstellen. Bas customizing vom Standard vm.xml.j2-Vorlage, um die erwarteten Jinja-Ausdrücke zu beinhalten, die die Rolle verwendet.

Hinweis: Die folgenden Variablen sind veraltet: 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 und libvirt_vm_console_log_path. Wenn die Variable libvirt_vms nicht gesetzt wird, ist ihr Standardwert eine Singleton-Liste, die eine VM-Spezifikation mit diesen veralteten Variablen enthält.

Abhängigkeiten

Bei Verwendung von qcow2-Formatlaufwerken ist qemu-img (im qemu-utils-Paket) erforderlich.

Beispiel-Playbook

---
- name: VMs erstellen
  hosts: hypervisor
  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'  # erstes Gerät auf dem IDE-Bus
          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'

Autorinformationen

Über das Projekt

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

Installieren
ansible-galaxy install t2d.ansible_role_libvirt_vm
GitHub Repository
Lizenz
Unknown
Downloads
83
Besitzer