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_mode
odervm.cpu_mode
nicht 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 auflocaltime
gesetzt.libvirt_vms
: Liste von zu erstellenden/zerstörenden VMs. Jede VM kann die folgenden Attribute haben:state
: aufpresent
setzen, 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_engine
kvm
ist, andernfallspc-1.0
.cpu_mode
: CPU-Modus der virtuellen Maschine. Standard isthost-passthrough
, wennlibvirt_vm_engine
kvm
ist, 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
:disk
odercdrom
.capacity
: Volumenkapazität (kann mit M,G,T oder MB,GB,TB usw. ergänzt werden) (erforderlich, wenn der Typdisk
ist).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).image
undbacking_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 desmacvtap
-Treiber.
network
: Name des Netzwerks, an das eine Schnittstelle angeschlossen werden soll. Muss angegeben werden, wenn der Schnittstellentypnetwork
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 Schnittstellentypdirect
ist. Enthält die folgenden Attribute:dev
: Der Name der Host-Schnittstelle, an die diese VM-Schnittstelle angeschlossen werden soll.mode
: Optionen sindvepa
,bridge
,private
undpassthrough
. Weitere Informationen finden Sie inman virsh
. Standard istvepa
.
console_log_enabled
: Wenntrue
, wird die Konsolenausgabe in eine Datei im angegebenen Pfadconsole_log_path
protokolliert, 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)