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_mode
lubvm.cpu_mode
są 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_engine
tokvm
, w przeciwnym raziepc-1.0
.cpu_mode
: Tryb CPU maszyny wirtualnej. Domyślniehost-passthrough
, jeślilibvirt_vm_engine
tokvm
, 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 typufile
należy podać rozszerzenie, jeśli chcesz, aby wolumeny były tworzone z jednym.file_path
: Gdzie obraz wolumenów typufile
powinien być umieszczony; domyślnielibvirt_volume_default_images_path
.device
:disk
lubcdrom
.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 virsh
dla 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).image
ibacking_image
są 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
,private
ipassthrough
. Zobaczman virsh
dla 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