serverbee.virt_guest_manage
Virtueller Gastverwaltungsrolle
Diese Rolle verwendet das offizielle Ansible Virt-Modul zur Verwaltung von
RHEL-basierten virtuellen Maschinen unter Verwendung von KVM als Hypervisor. Standardmäßig wird der AlmaLinux-Fork von RHEL verwendet.
Sie können alle Ihre VMs direkt über Einstellungen in group_vars oder host_vars steuern.
Die Hauptfunktion dieser Rolle ist die parallele Installation aller virtuellen Maschinen, die in virt_guest_list
festgelegt sind.
Um zu beginnen
Unterstützte Distributionen auf der Ebene virtueller Maschinen
- CentOS el6 (nicht mit den neuesten Rollen-Versionen getestet)
- CentOS el7
- AlmaLinux el8
- AlmaLinux el9
Standardwerte an Ihre Bedürfnisse anpassen
Zuerst müssen Sie virt_guest_init_passwd
mit einem benutzerdefinierten Passwort aktualisieren.
Als Nächstes müssen Sie den nächstgelegenen Mirror suchen und festlegen, um alle Komponenten des RHEL-basierten Installationsprogramms herunterzuladen.
Außerhalb des Anwendungsbereichs dieser Rolle
Diese Rolle kann LVM-basierte virtuelle Festplatten für VMs verwalten, aber Sie müssen vorher physische Volumes (PVS) und Volume-Gruppen (VGS) erstellen.
Es gibt auch zwei verschiedene Optionen für virtuelle Netzwerk-Interfaces der VMs. Der erste Weg ist die Verwendung eines bestehenden, bereits konfigurierten Linux-Bridges,
und der zweite Weg ist die Verwendung von libvirt-Netzwerken. In jedem Fall kann die letzte Option mit
virt_network_list
direkt aus dieser Rolle verwaltet werden.
Variablen
Allgemein
virt_guest_dependency_qemu_kvm_role
: [optional, Standardtrue
]: Ob eine Abhängigkeit für qemu-kvm aktiviert werden sollvirt_guest_mirror
: [Standard:http://repo.almalinux.org
]: AlmaLinux-Mirror, der zum Installieren des Betriebssystems verwendet wirdvirt_guest_os_location
: [Standard:{{ virt_guest_mirror }}/almalinux/9/BaseOS/x86_64/os
]: Speicherort, an dem die AlmaLinux-Betriebssystemkomponenten gespeichert sindvirt_guest_kickstart_config_dir
: [Standard:/tmp/kickstart
]: Der Pfad, in dem Kickstart-Dateien erstellt werdenvirt_guest_kickstart_config_port
: [Standard:8000
]: Der Port für das Herunterladen der Kickstart-Konfiguration während einer Installationvirt_guest_kickstart_config_url
: [Standard:IP des Hypervisors
]: Die URL für das Herunterladen der Kickstart-Konfiguration während einer Installationvirt_guest_kickstart_config_serve_timeout
: [Standard:90
]: Zeit in Sekunden zum Bereitstellen von Kickstart-Dateienvirt_guest_kickstart_installation_timeout
: [Standard:480
]: Zeit in Sekunden zum Abschluss einer Kickstart-Installationvirt_guest_init_passwd
: [erforderlich]: Ein Passwort des Root-Benutzers, das Sie für die erste Anmeldung verwenden werdenvirt_guest_init_hostname
: [Standard:fresh-installed.local
]: Der erste Hostname auf der Ebene des Betriebssystems der virtuellen Maschine
Virtuelle Netzwerkliste und deren eigene Einstellungen
virt_network_list
: [erforderlich, Standard:{}
]: Deklarationen von virtuellen Netzwerkenvirt_network_list.key
: [erforderlich]: Der Name des virtuellen Netzwerks (z.B.br-nat0:
)virt_network_list.key.router
: [erforderlich]: Die IP-Adresse des virtuellen Routers (z.B.192.168.2.1
)virt_network_list.key.netmask
: [erforderlich]: Die Netzmaske des virtuellen Netzwerks (z.B.255.255.255.0
)virt_network_list.key.start
: [erforderlich]: Die erste IP-Adresse des virtuellen Netzwerkbereichs (z.B.192.168.2.1
)virt_network_list.key.end
: [erforderlich]: Die letzte IP-Adresse des virtuellen Netzwerkbereichs (z.B.192.168.2.254
)
Virtuelle Gastliste und deren eigene Einstellungen
virt_guest_list
: [erforderlich, Standard:{}
]: Deklarationen von virtuellen Gästenvirt_guest_list.key
: [erforderlich]: Der Name der virtuellen Maschine (z.B.example-vm:
)virt_guest_list.key.autostart
: [optional, Standardtrue
]: Ob der Autostart für die virtuelle Maschine aktiviert werden sollvirt_guest_list.key.uuid
: [erforderlich]: Eindeutige universelle Kennung der virtuellen Maschine (z.B.ad852ffe-07d9-43ec-9f5a-ced644f9a7a5
)virt_guest_list.key.cpu
: [optional, Standard1
]: Setzen der CPU-Kernlimitsvirt_guest_list.key.ram
: [optional, Standard2
]: Setzen der RAM-Limits. Dieser Wert wird in GiB angegebenvirt_guest_list.key.disk
: [erforderlich]: Deklarationen von Virt-Gastfestplattenvirt_guest_list.key.disk.[s|v]d[a-z]
: [erforderlich]: Der Name der virtuellen Festplatte in der virtuellen Maschine (z.B.sda
,sdb
,sdc
, usw. odervda
,vdb
,vdc
, usw.)virt_guest_list.key.disk.[s|v]d[a-z].type
: [optional, Standardblock
]: Der Typ der virtuellen Festplatte (z.B.block
,file
)virt_guest_list.key.disk.[s|v]d[a-z].name
: [erforderlich nur für.type: file
]: Der Name der virtuellen QEMU-Festplattendateivirt_guest_list.key.disk.[s|v]d[a-z].format
: [optional, Standardraw
]: Der QEMU-Formattyp der virtuellen Festplatte (z.B.raw
,qcow2
)virt_guest_list.key.disk.[s|v]d[a-z].format_options
: [optional, Standardpreallocation=off
]: Die QEMU-Festplattenformatoptionen (z.B.preallocation=metadata
)virt_guest_list.key.disk.[s|v]d[a-z].vg
: [erforderlich nur für.type: block
]: Der Name der LVM-Volume-Gruppevirt_guest_list.key.disk.[s|v]d[a-z].lv
: [erforderlich nur für.type: block
]: Der Name des LVM-logischen Volumensvirt_guest_list.key.disk.[s|v]d[a-z].size
: [erforderlich, es sei denn, physische Laufwerke werden verwendet]: Größe der virtuellen Festplatte (z.B.2048M
,10G
,1T
, auch20%VG
oder jedes Äquivalent kann für LVM-basierte Festplatten verwendet werden)virt_guest_list.key.disk.[s|v]d[a-z].device
: [erforderlich nur für physische Laufwerke]: Der vollständige Pfad zum physischen Laufwerk auf einem Hypervisor (z.B./dev/sdb
,/dev/nvme0n1
, usw.)virt_guest_list.key.disk.[s|v]da.fstype
: [optional, Standardxfs
]: Dateisystemtyp für alle Partitionen innerhalb einer virtuellen Festplatte (z.B.ext4
,ext3
, usw.)virt_guest_list.key.network
: [erforderlich]: Deklarationen von Virt-Gastnetzwerkenvirt_guest_list.key.network.eth[0-9]
: [erforderlich]: Der Name des Netzwerkinterfaces in der virtuellen Maschine (z.B.eth0
,eth1
, usw.)virt_guest_list.key.network.eth[0-9].mac
: [erforderlich]: MAC-Adresse des virtuellen Netzwerkinterfaces (z.B.52:54:00:16:01:bc
, usw.)virt_guest_list.key.network.eth[0-9].bridge
: [erforderlich]: Der Name des Bridge-Interfaces, in das das vnet-Interface integriert wird (z.B.br0
,bridge1
, usw.)virt_guest_list.key.network.eth[0-9].model
: [optional, Standardvirtio
]: Das QEMU-Modell des virtuellen Netzwerkinterfaces (z.B.virtio
,e1000
,rtl8139
usw.)virt_guest_list.key.network.eth0.ip
: [optional]: Statische IP-Adresse für das Hauptnetzwerkinterfacevirt_guest_list.key.network.eth0.netmask
: [optional]: Netzmaske für das Hauptnetzwerkinterfacevirt_guest_list.key.network.eth0.gateway
: [optional]: IP-Adresse des Gateways für das Hauptnetzwerkinterfacevirt_guest_list.key.network.eth0.dns
: [optional]: Primärer DNS-Server. Diese Option unterstützt nur einen DNS-Server.virt_guest_list.key.vnc_enable
: [optional, Standardfalse
]: Aktivieren des VNC-Servers auf der QEMU-KVM-Seite, um auf eine virtuelle Maschine zuzugreifen
Abhängigkeiten
serverbee.qemu_kvm Rolle
Beispiel(e)
Einfaches Beispiel
---
- hosts: localhost
roles:
- serverbee.virt_guest_manage
vars:
virt_guest_list:
example-vm:
uuid: 7eb09567-83b8-4aab-916e-24924d6a0f89
disk:
sda:
vg: vg_local
lv: lv_vm_example
size: 10G
network:
eth0:
mac: 52:54:00:16:01:bc
bridge: br0
Vollständiges Optionenbeispiel
---
- hosts: localhost
roles:
- serverbee.virt_guest_manage
vars:
virt_network_list:
br-nat0:
router: 192.168.2.1
netmask: 255.255.255.0
start: 192.168.2.2
end: 192.168.2.254
virt_guest_list:
example-vm:
autostart: false
uuid: 7eb09567-83b8-4aab-916e-24924d6a0f89
cpu: 2 # Kerne
ram: 4 # GiB
disk:
sda:
type: block
format: raw
vg: vg_local
lv: lv_vm_example-first
size: 20%VG
fstype: ext4
vdb:
type: file
format: qcow2
format_options: preallocation=metadata
name: example-second-drive
size: 5G
sdc:
device: /dev/nvme0n1
network:
eth0:
mac: 52:54:00:16:01:bc
bridge: br0
model: virtio
ip: 172.16.2.2
netmask: 255.255.255.248
gateway: 172.16.2.1
dns: 172.16.2.1
eth1:
mac: 52:54:00:16:02:ba
network: br-nat0
model: e1000
vnc_enable: true
Was gibt es noch?
Überprüfung des Fortschritts der VM-Installation
Zuerst können Sie überprüfen, ob Ihre VM auf Ping-Anfragen reagiert. Wenn sie nicht antwortet, können Sie das CLI-Tool virsh
verwenden, um die Liste aller Ihrer VMs anzuzeigen und den Fortschritt jeder Installation zu überprüfen.
Der Befehl Virsh wird automatisch als Abhängigkeit für diese Rolle installiert. Sie können mit der console
-Option beobachten:
$ virsh list --all
$ virsh console example-vm
Timeout für den Abschluss der Installation
Es gibt eine Variable namens virt_guest_kickstart_installation_timeout
, die standardmäßig auf 480 Sekunden gesetzt ist.
Wenn Sie Probleme haben, Ihre VM vor Abschluss der Installation herunterzufahren, müssen Sie das Timeout erhöhen.
Es ist auch besser, den nächstgelegenen Mirror zumindest im selben Land wie Ihr Hosting-Anbieter einzustellen, um die Downloadgeschwindigkeit zu erhöhen.
Sie können dies tun, indem Sie die Variablen virt_guest_mirror
und virt_guest_os_location
ändern.
Zusätzliche Variablen zur Verwaltung nur einer VM
Diese Option kann sehr nützlich sein, wenn Sie viele virtuelle Maschinen haben, aber nur eine von ihnen verwalten möchten.
Sie führt das Ansible-Playbook schneller aus und ohne einige Dinge auf andere virtuelle Maschinen anzuwenden.
Dazu müssen Sie eine zusätzliche Variable namens vm
festlegen, wenn Sie Ihr Playbook anwenden:
$ ansible-playbook virt-guest-manage.yml --extra-vars vm=example-vm
Es unterstützt die Übergabe nur eines Namens einer virtuellen Maschine gleichzeitig.
Installation einer VM erneut ausführen
Wenn Sie zuvor ausprobiert haben und die Installation erneut ausführen möchten, müssen Sie zuerst alle vorhandenen Teile manuell entfernen:
$ virsh list --all
$ virsh destroy example-vm
$ virsh undefine example-vm
$ lvremove vg_local/lv_vm_example
Diese Rolle unterstützt keine automatische Neuinstallation von VMs, um die Entfernung vorhandener und benötigter Daten zu verhindern.
Lizenz
GPLv3 Lizenz
Autoreninformationen
Vitaly Yakovenko
ansible-galaxy install serverbee.virt_guest_manage