ovirt.vm-infra

oVirt Virtuelle Maschinen Infrastruktur

Diese Rolle wurde in die oVirt Ansible Collection migriert. Bitte verwenden Sie die neueste Version dort. Dieses Repository ist jetzt nur noch lesbar und wird nicht mehr aktiv weiterentwickelt.

Die Rolle ovirt.vm-infra verwaltet die virtuelle Maschinen Infrastruktur in oVirt. Diese Rolle erstellt auch ein Inventar der erstellten virtuellen Maschinen, wenn wait_for_ip auf true gesetzt ist und der Zustand der virtuellen Maschine running ist. Alle definierten virtuellen Maschinen sind Teil der Inventargruppe ovirt_vm. Zudem erstellt die Rolle Gruppen wie ovirt_tag_{tag_name}, wenn Tags einer virtuellen Maschine zugewiesen sind, und platziert alle virtuellen Maschinen mit diesem Tag in dieser Inventargruppe.

Betrachten Sie die folgende Variablenstruktur:

vms:
  - name: meinevm1
    tag: mein_tag1
    profile: mein_profil

  - name: meinevm2
    tag: mein_tag2
    profile: mein_profil

Die Rolle erstellt die Inventargruppe ovirt_vm mit beiden virtuellen Maschinen – meinevm1 und meinevm2. Die Rolle erstellt auch die Inventargruppe ovirt_tag_mein_tag1 mit der virtuellen Maschine meinevm1 und die Inventargruppe ovirt_tag_mein_tag2 mit der virtuellen Maschine meinevm2.

Hinweis

Bitte beachten Sie, dass Sie beim Installieren dieser Rolle von Ansible Galaxy angeweisen werden, den folgenden Befehl auszuführen:

$ ansible-galaxy install ovirt.vm-infra

Dies wird die Rolle in das Verzeichnis mit dem gleichen Namen herunterladen, wie Sie es auf der Befehlszeile angegeben haben, in diesem Fall ovirt.vm-infra. Beachten Sie jedoch, dass die Groß- und Kleinschreibung beachtet wird; wenn Sie beispielsweise OVIRT.vm-infra angeben, wird die gleiche Rolle heruntergeladen, aber sie wird in das Verzeichnis OVIRT.vm-infra hinzugefügt. In diesem Fall müssen Sie diese Rolle in Zukunft mit dem Großbuchstaben-Präfix ansprechen. Seien Sie also vorsichtig, wie Sie den Namen der Rolle in der Befehlszeile angeben.

Was die RPM-Installation betrifft, unterstützen wir drei alte Namen – ovirt.vm-infra, oVirt.vm-infra und ovirt-vm-infra. Sie können jeden dieser Namen verwenden. Diese Dokumentation und die Beispiele in diesem Repository verwenden den Namen ovirt.vm-infra. Die Rollennamen oVirt.vm-infra und ovirt-vm-infra sind veraltet.

Anforderungen

  • Ansible Version 2.9 oder höher
  • Python SDK Version 4.3 oder höher
  • python3-jmespath oder python2-jmespath

Einschränkungen

  • Unterstützt keinen Ansible-Überprüfungsmodus (Trockenlauf).

Rollenvariablen

Name Standardwert
vms UNDEF Liste von Dictionaries mit Spezifikationen für virtuelle Maschinen.
affinity_groups UNDEF Liste von Dictionaries mit Spezifikationen für Affinitätsgruppen.
wait_for_ip false Wenn true, sollte das Playbook auf die von dem Gast-Agent gemeldete IP-Adresse der virtuellen Maschine warten.
wait_for_ip_version v4 Geben Sie an, welche IP-Version erwartet werden soll. Entweder v4 oder v6.
wait_for_ip_range 0.0.0.0/0 Geben Sie das CIDR der virtuellen Maschinen-IP an, die gemeldet werden soll. Funktioniert nur für IPv4.
debug_vm_create false Wenn true, werden die Aufgaben der zu erstellenden virtuellen Maschine protokolliert. Das Protokoll kann Passwörter enthalten.
vm_infra_create_single_timeout 180 Zeit in Sekunden, um auf die Erstellung und den Start der VM zu warten (wenn der Zustand running ist).
vm_infra_create_poll_interval 15 Abfrageintervall. Zeit in Sekunden, um zwischen den Statusprüfungen der VM zu warten.
vm_infra_create_all_timeout vm_infra_create_single_timeout * (vms.length) Gesamte Wartezeit für alle VMs, um erstellt / gestartet zu werden.
vm_infra_wait_for_ip_retries 5 Anzahl der Versuche zur Überprüfung, ob die VM ihre IP-Adresse meldet.
vm_infra_wait_for_ip_delay 5 Abfrageintervall der IP-Adresse. Zeit in Sekunden, um zwischen der Überprüfung, ob die VM ihre IP-Adresse meldet, zu warten.

Die Variablen vms und profile können folgende Attribute enthalten. Beachten Sie, dass die Definition derselben Variablen in vms Vorrang hat:

Name Standardwert
name UNDEF Name der zu erstellenden virtuellen Maschine.
tag UNDEF Name des Tags, der der virtuellen Maschine zugewiesen werden soll. Nur Administratorbenutzer können dieses Attribut verwenden.
cloud_init UNDEF Dictionary mit Werten für die Initialisierung von Unix-ähnlichen virtuellen Maschinen mit Cloud-Init. Siehe Abschnitt cloud_init für genauere Beschreibungen.
cloud_init_nics UNDEF Liste von Dictionaries, die Netzwerkinterfaces darstellen, die durch Cloud-Init eingerichtet werden sollen. Siehe Abschnitt cloud_init_nics für genauere Beschreibungen.
sysprep UNDEF Dictionary mit Werten für die Initialisierung von Windows virtuellen Maschinen mit Sysprep. Siehe Abschnitt sysprep für genauere Beschreibungen.
profile UNDEF Dictionary, das die Hardware der virtuellen Maschine angibt. Siehe die Tabelle weiter unten.
state present Soll die virtuelle Maschine gestoppt, vorhanden oder aktiv sein. Hat Vorrang vor dem Zustandswert im Profil.
nics UNDEF Liste von Dictionaries, die die NICs der virtuellen Maschine spezifizieren. Siehe unten für genauere Beschreibungen.
cluster UNDEF Name des Clusters, in dem die virtuelle Maschine erstellt wird.
clone No Wenn yes, werden die Festplatten der erstellten virtuellen Maschine geklont und sind unabhängig von der Vorlage. Dieser Parameter wird nur verwendet, wenn der Zustand running oder present ist und die VM vorher nicht existierte.
template Blank Name der Vorlage, auf der die virtuelle Maschine basieren soll.
template_version UNDEF Versionsnummer der zu verwendenden Vorlage für die VM. Standardmäßig wird die neueste verfügbare Version der Vorlage verwendet.
memory UNDEF Menge an Arbeitsspeicher für die virtuelle Maschine.
memory_max UNDEF Obergrenze des Arbeitsspeichers der virtuellen Maschine, bis zu der der Speicher Hot-Plug durchgeführt werden kann.
memory_guaranteed UNDEF Menge des minimal garantierten Speichers der virtuellen Maschine. Der Präfix verwendet den IEC 60027-2 Standard (zum Beispiel 1GiB, 1024MiB). memory_guaranteed darf nicht niedriger sein als der memory Parameter.
cores UNDEF Anzahl der CPU-Kerne, die von der virtuellen Maschine verwendet werden.
sockets UNDEF Anzahl der virtuellen CPU-Sockel der virtuellen Maschine.
cpu_shares UNDEF Setzen Sie die CPU-Anteile für diese virtuelle Maschine.
cpu_threads UNDEF Setzen Sie die CPU-Threads für diese virtuelle Maschine.
disks UNDEF Liste von Dictionaries, die die zusätzlichen virtuellen Festplatten der Maschine spezifizieren. Siehe unten für genauere Beschreibungen.
nics UNDEF Liste von Dictionaries, die die NICs der virtuellen Maschine spezifizieren. Siehe unten für genauere Beschreibungen.
custom_properties UNDEF Eigenschaften, die an VDSM gesendet werden, um verschiedene Hooks zu konfigurieren.
Benutzerspezifische Eigenschaften sind eine Liste von Dictionaries, die folgende Werte enthalten können:
name - Name der benutzerdefinierten Eigenschaft. Zum Beispiel: hugepages, vhost, sap_agent usw.
regexp - Regulärer Ausdruck, der für die benutzerdefinierte Eigenschaft festgelegt werden soll.
value - Wert, der für die benutzerdefinierte Eigenschaft festgelegt werden soll.
high_availability UNDEF Ob der Knoten hochverfügbar sein soll oder nicht.
high_availability_priority UNDEF Gibt die Priorität der virtuellen Maschine in den Ausführungs- und Migrationswarteschlangen an. Virtuelle Maschinen mit höheren Prioritäten werden vor virtuellen Maschinen mit niedrigeren Prioritäten gestartet und migriert. Der Wert ist eine Ganzzahl zwischen 0 und 100. Je höher der Wert, desto höher die Priorität. Wenn kein Wert übergeben wird, wird der Standardwert von der oVirt/RHV-Engine festgelegt.
io_threads UNDEF Anzahl der IO-Threads, die von der virtuellen Maschine verwendet werden. 0 bedeutet, dass IO-Threading deaktiviert ist.
description UNDEF Beschreibung der virtuellen Maschine.
operating_system UNDEF Betriebssystem der virtuellen Maschine. Zum Beispiel: rhel_7x64
type UNDEF Typ der virtuellen Maschine. Mögliche Werte: desktop, server oder high_performance
graphical_console UNDEF Weisen Sie der virtuellen Maschine eine grafische Konsole zu.
Die grafische Konsole ist ein Dictionary, das folgende Werte haben kann:
headless_mode - Wenn true, deaktiviert die Grafikkonsole für diese virtuelle Maschine.
protocol - 'VNC', 'Spice' oder beides.
storage_domain UNDEF Name der Speicherdomäne, in der alle virtuellen Maschinenfestplatten erstellt werden sollen. Wird nur berücksichtigt, wenn eine Vorlage angegeben ist.
state present Soll die virtuelle Maschine gestoppt, vorhanden oder aktiv sein.
ssh_key UNDEF SSH-Schlüssel, der in die virtuelle Maschine hochgeladen werden soll. Dieser Parameter ist für die Abwärtskompatibilität vorgesehen und hat Vorrang vor authorized_ssh_keys im cloud_init Dictionary.
domain UNDEF Die Domain der virtuellen Maschine. Dieser Parameter ist für die Abwärtskompatibilität vorgesehen und hat Vorrang vor host_name im cloud_init oder sysprep Dictionary.
lease UNDEF Name der Speicherdomäne, auf der das Leasing der virtuellen Maschine liegt.
root_password UNDEF Das Root-Passwort der virtuellen Maschine. Dieser Parameter ist für die Abwärtskompatibilität vorgesehen und hat Vorrang vor root_password im cloud_init oder sysprep Dictionary.
host UNDEF Wenn Sie den cpu_mode auf host_passthrough setzen müssen, müssen Sie diesen Parameter verwenden, um den Host zu definieren, der zusammen mit der Platzierungspolitik auf "pinned" gesetzt werden muss.
cpu_mode UNDEF CPU-Modus der virtuellen Maschine. Es kann einer der folgenden sein: host_passthrough, host_model oder custom.
placement_policy UNDEF Die Konfiguration der Platzierungspolitik der virtuellen Maschine.
boot_devices UNDEF Liste der Bootgeräte, die verwendet werden sollen, um zu booten. Gültige Einträge sind cdrom, hd, network.
serial_console UNDEF Wahr aktiviert VirtIO-Serienkonsole, falsch deaktiviert sie. Wird standardmäßig von oVirt/RHV-Engine ausgewählt.
serial_policy UNDEF Geben Sie eine Seriennummernrichtlinie für die virtuelle Maschine an. Folgende Optionen werden unterstützt.
vm - Setzt die UUID der virtuellen Maschine als ihre Seriennummer.
host - Setzt die UUID des Hosts als die Seriennummer der virtuellen Maschine.
custom - Erlaubt es Ihnen, eine benutzerdefinierte Seriennummer im Parameter serial_policy_value anzugeben.
serial_policy_value UNDEF Erlaubt es Ihnen, eine benutzerdefinierte Seriennummer anzugeben. Dieser Parameter wird nur verwendet, wenn serial_policy als benutzerdefiniert festgelegt ist.
comment UNDEF Kommentar zur virtuellen Maschine.

Der Eintrag in der Liste disks des profile Dictionaries kann folgende Attribute enthalten:

Name Standardwert
size UNDEF Die Größe der zusätzlichen Festplatte.
name UNDEF Der Name der zusätzlichen Festplatte.
id UNDEF ID der Festplatte. Wenn Sie die ID der Festplatte angeben und den Namen, wird die Festplatte nach ID gesucht und der Name aktualisiert, wenn er von dem Namen abweicht, der im Namensparameter angegeben ist.
storage_domain UNDEF Der Name der Speicherdomäne, in der die Festplatte erstellt werden soll.
interface UNDEF Die Schnittstelle der Festplatte.
name_prefix True Wenn true, wird der Name der VM als Präfix für den Festplattentitel verwendet. Wenn false, wird nur der Name der Festplatte verwendet – könnte nützlich sein, wenn die VM aus einer Vorlage mit benutzerdefinierter Festplattengröße erstellt wird.
format UNDEF Geben Sie das Format der Festplatte an.
  • cow - Wenn gesetzt, wird die Festplatte als dünn provisionierte Festplatte erstellt, sodass der Speicherplatz nach Bedarf für das Volume zugewiesen wird.
  • raw - Wenn gesetzt, wird der Speicherplatz sofort zugewiesen. Dieses Format ist auch als vorab zugeordnete Festplatten bekannt.
bootable UNDEF Wahr, wenn die Festplatte bootfähig sein soll.
activate UNDEF Wahr, wenn die Festplatte aktiviert werden soll.

Der Eintrag in der Liste nics des profile Dictionaries kann folgende Attribute enthalten:

Name Standardwert
name UNDEF Der Name des Netzwerkinterface.
interface UNDEF Typ des Netzwerkinterfaces.
mac_address UNDEF Benutzerdefinierte MAC-Adresse des Netzwerkinterfaces, standardmäßig wird sie aus dem MAC-Pool abgerufen.
network UNDEF Logisches Netzwerk, das das VM-Netzwerkinterface verwenden soll. Wenn kein Netzwerk angegeben ist, wird leeres Netzwerk verwendet.
profile UNDEF Virtuelles Netzwerkinferface-Profil, das an das Netzwerkinterface der VM angehängt werden soll.

Die Liste affinity_groups kann folgende Attribute enthalten:

Name Standardwert
cluster UNDEF (erforderlich) Name des Clusters der Affinitätsgruppe.
description UNDEF Leserfreundliche Beschreibung.
host_enforcing false
  • wahr - VM kann nicht auf dem Host gestartet werden, wenn es die host_rule nicht erfüllt.
  • falsch - VM folgt host_rule mit weicher Durchsetzung.
host_rule UNDEF
  • positiv - VMs in dieser Gruppe müssen auf diesem Host ausgeführt werden.
  • negativ - VMs in dieser Gruppe dürfen nicht auf diesem Host ausgeführt werden.
hosts UNDEF Liste von Hostnamen, die dieser Gruppe zugewiesen sind.
name UNDEF (erforderlich) Name der Affinitätsgruppe.
state UNDEF Ob die Gruppe vorhanden oder abwesend sein soll.
vm_enforcing false
  • wahr - VM kann nicht gestartet werden, wenn sie die vm_rule nicht erfüllt.
  • falsch - VM folgt vm_rule mit weicher Durchsetzung.
vm_rule UNDEF
  • positiv - Alle VMs in dieser Gruppe versuchen, auf demselben Host auszuführen.
  • negativ - Alle VMs in dieser Gruppe versuchen, auf separaten Hosts auszuführen.
  • deaktiviert - Diese Affinitätsgruppe hat keine Wirkung.
vms UNDEF Liste der VMs, die dieser Affinitätsgruppe zugewiesen werden sollen.
wait true Wenn true, wartet das Modul auf den gewünschten Zustand.

Die Liste affinity_labels kann folgende Attribute enthalten:

Name Standardwert
cluster UNDEF (erforderlich) Name des Clusters der Affinitätsgruppen.
hosts UNDEF Liste von Hostnamen, die diesem Label zugewiesen sind.
name UNDEF (erforderlich) Name des Affinitätslabels.
state UNDEF Ob das Label vorhanden oder abwesend sein soll.
vms UNDEF Liste der VMs, die diesem Affinitätslabel zugewiesen sind.

Das cloud_init Dictionary kann folgende Attribute enthalten:

Name Beschreibung
host_name Hostname, der der virtuellen Maschine beim Einsatz zugewiesen wird.
timezone Zeitzone, die der virtuellen Maschine beim Einsatz zugewiesen wird.
user_name Benutzername, der verwendet wird, um das Passwort der virtuellen Maschine beim Einsatz zu setzen.
root_password Passwort, das für den Benutzer gesetzt wird, der durch den Parameter user_name angegeben ist. Standardmäßig wird es für den Root-Benutzer festgelegt.
authorized_ssh_keys Verwenden Sie diese SSH-Schlüssel, um sich bei der virtuellen Maschine anzumelden.
regenerate_ssh_keys Wenn wahr, werden SSH-Schlüssel auf der virtuellen Maschine neu generiert.
custom_script Cloud-init-Skript, das bei der Bereitstellung auf der virtuellen Maschine ausgeführt wird. Dies wird an das Ende des von anderen Optionen generierten Cloud-Init-Skripts angehängt.
dns_servers DNS-Server, die auf der virtuellen Maschine konfiguriert werden sollen.
dns_search DNS-Suchdomains, die auf der virtuellen Maschine konfiguriert werden sollen.
nic_boot_protocol Setzen Sie das Bootprotokoll des Netzwerkinterfaces der virtuellen Maschine. Kann einer von keiner, dhcp oder statisch sein.
nic_ip_address Wenn das Bootprotokoll statisch ist, setzen Sie diese IP-Adresse auf das Netzwerkinterface der virtuellen Maschine.
nic_netmask Wenn das Bootprotokoll statisch ist, setzen Sie diese Netzmaske auf das Netzwerkinterface der virtuellen Maschine.
nic_gateway Wenn das Bootprotokoll statisch ist, setzen Sie dieses Gateway auf das Netzwerkinterface der virtuellen Maschine.
nic_name Setzen Sie den Namen auf das Netzwerkinterface der virtuellen Maschine.
nic_on_boot Wenn wahr, wird das Netzwerkinterface beim Booten gestartet.

Das sysprep Dictionary kann folgende Attribute enthalten:

Name Beschreibung
host_name Hostname, der der virtuellen Maschine beim Einsatz zugewiesen wird.
active_directory_ou Active Directory Organisationseinheit, die für die Anmeldung des Benutzers verwendet wird.
org_name Organisationsname, der der Windows virtuellen Maschine zugewiesen wird.
user_name Benutzername, der verwendet wird, um das Passwort der Windows virtuellen Maschine zu setzen.
root_password Passwort, das für den Benutzer gesetzt wird, der durch den Benutzername-Parameter angegeben wird. Standardmäßig wird es für den Root-Benutzer festgelegt.
windows_license_key Lizenzschlüssel, der der Windows virtuellen Maschine zugewiesen wird.
input_locale Eingabe-Lokalisierung der Windows virtuellen Maschine.
system_locale Systemlokalisierung der Windows virtuellen Maschine.
ui_language UI-Sprache der Windows virtuellen Maschine.
domain Domain, die der Windows virtuellen Maschine zugewiesen wird.
timezone Zeitzone, die der Windows virtuellen Maschine zugewiesen wird.

Die cloud_init_nics Liste von Dictionaries repräsentiert Netzwerkinterfaces, die durch Cloud-Init eingerichtet werden sollen. Diese Option wird verwendet, wenn der Benutzer mehrere Netzwerkinterfaces über Cloud-Init einrichten möchte. Wenn ein Netzwerkinterface ausreicht, sollte der Benutzer die cloud_init nic_* Parameter verwenden. Die cloud_init nic_* Parameter werden mit den cloud_init_nics Parametern zusammengeführt. Das Dictionary kann folgende Werte enthalten.

Name Beschreibung
nic_boot_protocol Setzen Sie das Bootprotokoll des Netzwerkinterfaces der virtuellen Maschine. Kann einer von keiner, dhcp oder statisch sein.
nic_ip_address Wenn das Bootprotokoll statisch ist, setzen Sie diese IP-Adresse auf das Netzwerkinterface der virtuellen Maschine.
nic_netmask Wenn das Bootprotokoll statisch ist, setzen Sie diese Netzmaske auf das Netzwerkinterface der virtuellen Maschine.
nic_gateway Wenn das Bootprotokoll statisch ist, setzen Sie dieses Gateway auf das Netzwerkinterface der virtuellen Maschine.
nic_name Setzen Sie den Namen auf das Netzwerkinterface der virtuellen Maschine.
nic_on_boot Wenn wahr, wird das Netzwerkinterface beim Booten gestartet.

Abhängigkeiten

Keine.

Beispiel-Playbook

---
- name: oVirt Infrastruktur
  hosts: localhost
  connection: local
  gather_facts: false

  vars_files:
    # Enthält die verschlüsselte Variable `engine_password`, die mit ansible-vault gespeichert ist
    - passwords.yml

  vars:
    engine_fqdn: ovirt-engine.example.com
    engine_user: admin@internal
    engine_cafile: /etc/pki/ovirt-engine/ca.pem

    httpd_vm:
      cluster: produktion
      domain: example.com
      template: rhel7
      memory: 2GiB
      cores: 2
      ssh_key: ssh-rsa AAA...LGx benutzer@fqdn
      disks:
        - size: 10GiB
          name: data
          storage_domain: mynfsstorage
          interface: virtio

    db_vm:
      cluster: produktion
      domain: example.com
      template: rhel7
      memory: 4GiB
      cores: 1
      ssh_key: ssh-rsa AAA...LGx benutzer@fqdn
      disks:
        - size: 50GiB
          name: data
          storage_domain: mynfsstorage
          interface: virtio
      nics:
        - name: ovirtmgmt
          network: ovirtmgmt
          profile: ovirtmgmt

    vms:
      - name: postgresql-vm-0
        tag: postgresql_vm
        profile: "{{ db_vm }}"
      - name: postgresql-vm-1
        tag: postgresql_vm
        profile: "{{ db_vm }}"
      - name: apache-vm
        tag: httpd_vm
        profile: "{{ httpd_vm }}"

    affinity_groups:
      - name: db-ag
        cluster: produktion
        vm_enforcing: true
        vm_rule: negativ
        vms:
          - postgresql-vm-0
          - postgresql-vm-1

  roles:
    - ovirt.vm-infra

Im folgenden Beispiel sehen Sie, wie das von der Rolle ovirt.vm-infra erstellte Inventar in einem nachfolgenden Play verwendet wird.

---
- name: Apache VM bereitstellen
  hosts: localhost
  connection: local
  gather_facts: false

  vars_files:
    # Enthält die verschlüsselte Variable `engine_password`, die mit ansible-vault gespeichert ist
    - passwords.yml

  vars:
    wait_for_ip: true

    httpd_vm:
      cluster: produktion
      state: running
      domain: example.com
      template: rhel7
      memory: 2GiB
      cores: 2
      ssh_key: ssh-rsa AAA...LGx benutzer@fqdn
      disks:
        - size: 10GiB
          name: data
          storage_domain: mynfsstorage
          interface: virtio

    vms:
      - name: apache-vm
        tag: apache
        profile: "{{ httpd_vm }}"

  roles:
    - ovirt.vm-infra

- name: Apache auf VM bereitstellen
  hosts: ovirt_tag_apache

  vars_files:
    - apache_vars.yml

  roles:
    - geerlingguy.apache

asciicast

Lizenz

Apache Lizenz 2.0

Über das Projekt

Role to manage virtual machine infrastructure in oVirt.

Installieren
ansible-galaxy install ovirt.vm-infra
Lizenz
apache-2.0
Downloads
65.4k
Besitzer
Open Virtual Datacenter