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, Standard true]: Ob eine Abhängigkeit für qemu-kvm aktiviert werden soll
  • virt_guest_mirror: [Standard: http://repo.almalinux.org]: AlmaLinux-Mirror, der zum Installieren des Betriebssystems verwendet wird
  • virt_guest_os_location: [Standard: {{ virt_guest_mirror }}/almalinux/9/BaseOS/x86_64/os]: Speicherort, an dem die AlmaLinux-Betriebssystemkomponenten gespeichert sind
  • virt_guest_kickstart_config_dir: [Standard: /tmp/kickstart]: Der Pfad, in dem Kickstart-Dateien erstellt werden
  • virt_guest_kickstart_config_port: [Standard: 8000]: Der Port für das Herunterladen der Kickstart-Konfiguration während einer Installation
  • virt_guest_kickstart_config_url: [Standard: IP des Hypervisors]: Die URL für das Herunterladen der Kickstart-Konfiguration während einer Installation
  • virt_guest_kickstart_config_serve_timeout: [Standard: 90]: Zeit in Sekunden zum Bereitstellen von Kickstart-Dateien
  • virt_guest_kickstart_installation_timeout: [Standard: 480]: Zeit in Sekunden zum Abschluss einer Kickstart-Installation
  • virt_guest_init_passwd: [erforderlich]: Ein Passwort des Root-Benutzers, das Sie für die erste Anmeldung verwenden werden
  • virt_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 Netzwerken
  • virt_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ästen
  • virt_guest_list.key: [erforderlich]: Der Name der virtuellen Maschine (z.B. example-vm:)
  • virt_guest_list.key.autostart: [optional, Standard true]: Ob der Autostart für die virtuelle Maschine aktiviert werden soll
  • virt_guest_list.key.uuid: [erforderlich]: Eindeutige universelle Kennung der virtuellen Maschine (z.B. ad852ffe-07d9-43ec-9f5a-ced644f9a7a5)
  • virt_guest_list.key.cpu: [optional, Standard 1]: Setzen der CPU-Kernlimits
  • virt_guest_list.key.ram: [optional, Standard 2]: Setzen der RAM-Limits. Dieser Wert wird in GiB angegeben
  • virt_guest_list.key.disk: [erforderlich]: Deklarationen von Virt-Gastfestplatten
  • virt_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. oder vda, vdb, vdc, usw.)
  • virt_guest_list.key.disk.[s|v]d[a-z].type: [optional, Standard block]: 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-Festplattendatei
  • virt_guest_list.key.disk.[s|v]d[a-z].format: [optional, Standard raw]: Der QEMU-Formattyp der virtuellen Festplatte (z.B. raw, qcow2)
  • virt_guest_list.key.disk.[s|v]d[a-z].format_options: [optional, Standard preallocation=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-Gruppe
  • virt_guest_list.key.disk.[s|v]d[a-z].lv: [erforderlich nur für .type: block]: Der Name des LVM-logischen Volumens
  • virt_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, auch 20%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, Standard xfs]: Dateisystemtyp für alle Partitionen innerhalb einer virtuellen Festplatte (z.B. ext4, ext3, usw.)
  • virt_guest_list.key.network: [erforderlich]: Deklarationen von Virt-Gastnetzwerken
  • virt_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, Standard virtio]: 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 Hauptnetzwerkinterface
  • virt_guest_list.key.network.eth0.netmask: [optional]: Netzmaske für das Hauptnetzwerkinterface
  • virt_guest_list.key.network.eth0.gateway: [optional]: IP-Adresse des Gateways für das Hauptnetzwerkinterface
  • virt_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, Standard false]: 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

Über das Projekt

Role to install and manage KVM VMs.

Installieren
ansible-galaxy install serverbee.virt_guest_manage
GitHub Repository
Lizenz
Unknown
Downloads
76
Besitzer