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 istvolume.libvirt_volume_default_format: Format für von der Rolle erstellte Volumen, Standard istqcow2.libvirt_volume_default_device: Steuert, wie das Gerät im Gastsystem erscheint. Standard istdisk.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, wennlibvirt_cpu_modeodervm.cpu_modenicht definiert ist.libvirt_vm_arch: CPU-Architektur, Standard istx86_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 auflocaltimegesetzt.libvirt_vms: Liste von zu erstellenden/zerstörenden VMs. Jede VM kann die folgenden Attribute haben:state: aufpresentsetzen, um die VM zu erstellen, oder aufabsent, um die VM zu zerstören. Standard istpresent.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 istNone, wennlibvirt_vm_enginekvmist, andernfallspc-1.0.cpu_mode: CPU-Modus der virtuellen Maschine. Standard isthost-passthrough, wennlibvirt_vm_enginekvmist, andernfallshost-model. Kann auf none gesetzt werden, um keinen CPU-Modus zu konfigurieren.clock_offset: Überschreibt den Standardwert inlibvirt_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; Beifile-Typ-Volumen die Erweiterung angeben, wenn gewünscht.file_path: Wohin das Image vonfile-Typ-Volumen platziert werden soll; Standardmäßiglibvirt_volume_default_images_path.device:diskodercdrom.capacity: Volumenkapazität (kann mit M,G,T oder MB,GB,TB usw. ergänzt werden) (erforderlich, wenn der Typdiskist).format: Optionen sindraw,qcow2,vmdk. Weitere Details finden Sie inman virsh. Standard istqcow2.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).imageundbacking_imagesind 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 desmacvtap-Treiber.
network: Name des Netzwerks, an das eine Schnittstelle angeschlossen werden soll. Muss angegeben werden, wenn der Schnittstellentypnetworkist.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 Schnittstellentypdirectist. Enthält die folgenden Attribute:dev: Der Name der Host-Schnittstelle, an die diese VM-Schnittstelle angeschlossen werden soll.mode: Optionen sindvepa,bridge,privateundpassthrough. Weitere Informationen finden Sie inman virsh. Standard istvepa.
console_log_enabled: Wenntrue, wird die Konsolenausgabe in eine Datei im angegebenen Pfadconsole_log_pathprotokolliert, anstatt an ein PTY. Wennfalse, wird die direkte Terminalausgabe an ein PTY am seriellen Port 0 geleitet. Standard istfalse.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 isttrue.autostart: Ob die VM beim Start des Hosts gestartet werden soll. Standard isttrue.xml_file: Optional eine modifizierte XML-Vorlage bereitstellen. Bas customizing vom Standardvm.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
- Mark Goddard (mark@stackhpc.com)
