t2d.ansible_role_libvirt_vm
Libvirt VM
Ta rola konfiguruje i tworzy (lub niszczy) maszyny wirtualne (VM) na hipernadzorze KVM.
Wymagania
Gospodarz powinien mieć włączoną technologię wirtualizacji (VT) i być wstępnie skonfigurowany z libvirt/KVM.
Zmienne Roli
libvirt_vm_default_console_log_dir: Domyślny katalog na logi konsoli VM, jeśli nie podano ścieżki do pliku logu specyficznego dla VM. Domyślnie to "/var/log/libvirt/qemu/".libvirt_vm_image_cache_path: Katalog na buforowanie pobranych obrazów. Domyślnie "/tmp/".libvirt_volume_default_images_path: Katalog, w którym przechowywane są obrazy instancji. Domyślnie '/var/lib/libvirt/images'.libvirt_volume_default_type: Jaki typ wolumenu podstawowego używa instancja? Domyślnievolume.libvirt_volume_default_format: Format dla wolumenów tworzonych przez rolę. Domyślnieqcow2.libvirt_volume_default_device: Kontrola, jak urządzenie pojawia się w systemie gościa. Domyślniedisk.libvirt_vm_engine: Silnik wirtualizacji. Jeśli nie ustawiony, rola spróbuje automatycznie wykryć optymalny silnik.libvirt_vm_emulator: Ścieżka do binarnego emulatora. Jeśli nie ustawiony, rola spróbuje automatycznie wykryć prawidłowy emulator.libvirt_cpu_mode_default: Domyślny tryb CPU, jeślilibvirt_cpu_modelubvm.cpu_modesą niezdefiniowane.libvirt_vm_arch: Architektura CPU, domyślniex86_64.libvirt_vm_uri: Zastępuje URI połączenia libvirt. Zobacz dokumentację libvirt po więcej szczegółów.libvirt_vm_virsh_default_env: Zmienne zawarte w tym słowniku są dodawane do środowiska używanego podczas wykonywania poleceń virsh.libvirt_vm_clock_offset: Jeśli zdefiniowane, przesunięcie zegara instancji jest ustawiane na podaną wartość. Gdy nie zdefiniowane, synchronizacja ustawiana jest nalocaltime.libvirt_vms: lista VM do utworzenia/zerwania. Każda z nich może mieć następujące atrybuty:state: ustaw napresent, aby utworzyć, lubabsent, aby zniszczyć VM. Domyślniepresent.name: nazwa przypisana do VM.memory_mb: pamięć przypisana do VM, w megabajtach.vcpus: liczba rdzeni VCPU przypisana do VM.machine: Typ maszyny wirtualnej. DomyślnieNone, jeślilibvirt_vm_enginetokvm, w przeciwnym raziepc-1.0.cpu_mode: Tryb CPU maszyny wirtualnej. Domyślniehost-passthrough, jeślilibvirt_vm_enginetokvm, w przeciwnym raziehost-model. Może być ustawione na brak, aby nie konfigurować trybu CPU.clock_offset: Zastępuje domyślny ustawiony wlibvirt_vm_clock_offset.enable_vnc: Jeśli prawda, włącza nasłuchiwanie VNC na localhost do użycia z VirtManager i podobnymi narzędziami.volumes: lista wolumenów do podłączenia do VM. Każdy wolumen jest zdefiniowany za pomocą następującego słownika:pool: Nazwa lub UUID puli pamięci, z której wolumen powinien być przydzielony.name: Nazwa, którą należy przypisać tworzonemu wolumenowi; dla wolumenów typufilenależy podać rozszerzenie, jeśli chcesz, aby wolumeny były tworzone z jednym.file_path: Gdzie obraz wolumenów typufilepowinien być umieszczony; domyślnielibvirt_volume_default_images_path.device:disklubcdrom.capacity: pojemność wolumenu (może mieć sufiks M,G,T lub MB,GB,TB itd.) (wymagana, gdy typ todisk).format: opcje toraw,qcow2,vmdk. Zobaczman virshdla pełnego zakresu. Domyślnieqcow2.image: (opcjonalnie) URL do obrazu, z którym wolumen jest inicjowany (pełna kopia).backing_image: (opcjonalnie) nazwa wolumenu podstawowego, który już jest w tej samej puli (kopiowanie na zapis).imageibacking_imagesą nawzajem wykluczającymi się opcjami.target: (opcjonalnie) Ręczne określenie typu i kolejności wolumenów.
interfaces: lista interfejsów sieciowych do podłączenia do VM. Każdy interfejs sieciowy jest zdefiniowany za pomocą następującego słownika:type: Typ interfejsu. Możliwe wartości:network: Podłącza interfejs do nazwanego wirtualnego sieci Libvirt. Jest to wartość domyślna.direct: Bezpośrednio podłącza interfejs do jednego z fizycznych interfejsów hosta, używając sterownikamacvtap.
network: Nazwa sieci, do której interfejs powinien być podłączony. Musi być określona, jeśli i tylko jeśli typ interfejsu tonetwork.mac: "Adres" sprzętowy wirtualnej instancji, jeśli nieobecny, jeden zostanie utworzony.source: Słownik definiujący interfejs hosta, do którego ten interfejs VM powinien być podłączony. Musi być określona, jeśli i tylko jeśli typ interfejsu todirect. Zawiera następujące atrybuty:dev: Nazwa interfejsu hosta, do którego ten interfejs VM powinien być podłączony.mode: opcje tovepa,bridge,privateipassthrough. Zobaczman virshdla więcej szczegółów. Domyślnievepa.
console_log_enabled: jeślitrue, loguje dane wyjściowe konsoli do pliku pod ścieżką określoną przezconsole_log_path, zamiast do PTY. Jeślifalse, kieruje dane wyjściowe terminala do PTY na porcie szeregowym 0. Domyślniefalse.console_log_path: Ścieżka do pliku logu konsoli. Domyślnie{{ libvirt_vm_default_console_log_dir }}/{{ name }}-console.log.start: Czy natychmiast uruchomić VM po jej zdefiniowaniu. Domyślnie to prawda.autostart: Czy uruchomić VM po uruchomieniu hosta. Domyślnie to prawda.xml_file: Opcjonalnie dostarcz zmodyfikowany szablon XML. Bazuj na domyślnymvm.xml.j2, aby uwzględnić spodziewane wyrażenia jinja, których używa rola.
Uwaga: następujące zmienne są przestarzałe: 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 i
libvirt_vm_console_log_path. Jeśli zmienna libvirt_vms jest pominięta, jej
domyślna wartość to lista jednoelementowa zawierająca specyfikację VM z użyciem
tych przestarzałych zmiennych.
Zależności
Jeżeli używasz obrazów w formacie qcow2, wymagany jest qemu-img (w pakiecie qemu-utils).
Przykładowy Playbook
---
- name: Tworzenie VM
hosts: hipernadzor
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' # pierwszy wolumen na magistrali 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'
Informacje o autorze
- Mark Goddard (mark@stackhpc.com)
ansible-galaxy install t2d.ansible_role_libvirt_vm