ovirt.vm-infra

oVirt Wirtualna Infrastruktura Maszyn

Ta rola została przeniesiona do oVirt Ansible Collection, proszę używać najnowszej wersji stamtąd. To repozytorium jest teraz tylko do odczytu i nie jest już używane do aktywnego rozwoju.

Rola ovirt.vm-infra zarządza infrastrukturą maszyn wirtualnych w oVirt. Ta rola tworzy również inwentarz utworzonych maszyn wirtualnych, jeśli wait_for_ip jest ustawione na true, a stan maszyny wirtualnej to running. Wszystkie zdefiniowane maszyny wirtualne są częścią grupy inwentarzowej ovirt_vm. Rola tworzy również grupy ovirt_tag_{tag_name}, jeśli do maszyny wirtualnej przypisane są tagi, i umieszcza wszystkie maszyny wirtualne z tym tagiem w odpowiedniej grupie inwentarzowej.

Rozważ następującą strukturę zmiennych:

vms:
  - name: myvm1
    tag: mytag1
    profile: myprofile

  - name: myvm2
    tag: mytag2
    profile: myprofile

Rola utworzy grupę inwentarzową ovirt_vm z obiema maszynami wirtualnymi - myvm1 i myvm2. Rola utworzy również grupę inwentarzową ovirt_tag_mytag1 z maszyną wirtualną myvm1 oraz grupę inwentarzową ovirt_tag_mytag2 z maszyną wirtualną myvm2.

Uwaga

Proszę zauważyć, że podczas instalacji tej roli z Ansible Galaxy należy uruchomić następujące polecenie:

$ ansible-galaxy install ovirt.vm-infra

To pobierze rolę do katalogu o tej samej nazwie, jak wskazano w wierszu poleceń, w tym przypadku ovirt.vm-infra. Pamiętaj, że nazwa jest wrażliwa na wielkość liter, więc jeśli na przykład podasz OVIRT.vm-infra, pobierze tę samą rolę, ale doda ją do katalogu o nazwie OVIRT.vm-infra. W takim przypadku będziesz musiał odnosić się do tej roli z wielką literą w przyszłości. Dlatego bądź ostrożny, jak podajesz nazwę roli w wierszu poleceń.

Jeśli chodzi o instalację RPM, wspieramy trzy starsze nazwy - ovirt.vm-infra, oVirt.vm-infra i ovirt-vm-infra. Możesz użyć dowolnej z tych nazw. Ta dokumentacja i przykłady w tym repozytorium używają nazwy ovirt.vm-infra. Nazwy ról oVirt.vm-infra i ovirt-vm-infra są przestarzałe.

Wymagania

  • Wersja Ansible 2.9 lub wyższa
  • Wersja SDK Pythona 4.3 lub wyższa
  • python3-jmespath lub python2-jmespath

Ograniczenia

  • Nie obsługuje trybu sprawdzania Ansible (Symulacja).

Zmienne roli

Nazwa Wartość domyślna
vms UNDEF Lista słowników ze specyfikacjami maszyn wirtualnych.
affinity_groups UNDEF Lista słowników ze specyfikacjami grup więzi.
wait_for_ip false Jeśli prawda, playbook powinien czekać na adres IP maszyny wirtualnej zgłaszany przez agenta gościa.
wait_for_ip_version v4 Określa, na który wersję IP należy czekać. Może być v4 lub v6.
wait_for_ip_range 0.0.0.0/0 Określa CIDR adresu IP maszyny wirtualnej, który powinien być zgłoszony. Działa tylko dla IPv4.
debug_vm_create false Jeśli prawda, loguje zadania tworzenia maszyny wirtualnej. Log może zawierać hasła.
vm_infra_create_single_timeout 180 Czas w sekundach na czekanie na utworzenie i uruchomienie maszyny wirtualnej (jeśli stan to running).
vm_infra_create_poll_interval 15 Interwał sprawdzania. Czas w sekundach na czekanie między sprawdzeniem stanu maszyny wirtualnej.
vm_infra_create_all_timeout vm_infra_create_single_timeout * (vms.length) Całkowity czas na czekanie na utworzenie/uruchomienie wszystkich maszyn wirtualnych.
vm_infra_wait_for_ip_retries 5 Liczba prób sprawdzania, czy maszyna wirtualna zgłasza swój adres IP.
vm_infra_wait_for_ip_delay 5 Interwał sprawdzania adresu IP. Czas w sekundach na czekanie między sprawdzeniem, czy maszyna wirtualna zgłasza adres IP.

Zmienna vms i profile mogą zawierać następujące atrybuty, przy czym jeśli zdefiniujesz tę samą zmienną w obu miejscach, wartość w vms ma pierwszeństwo:

Nazwa Wartość domyślna
name UNDEF Nazwa maszyny wirtualnej do utworzenia.
tag UNDEF Nazwa tagu do przypisania maszynie wirtualnej. Tylko użytkownicy administracyjni mogą używać tego atrybutu.
cloud_init UNDEF Słownik z wartościami do inicjalizacji maszyny wirtualnej działającej w systemach Unix za pomocą cloud init. Zobacz poniżej sekcję cloud_init dla dokładniejszego opisu.
cloud_init_nics UNDEF Lista słowników reprezentujących interfejsy sieciowe, które mają być skonfigurowane przez cloud init. Zobacz poniżej sekcję cloud_init_nics dla dokładniejszego opisu.
sysprep UNDEF Słownik z wartościami do inicjalizacji maszyny wirtualnej działającej w systemach Windows za pomocą sysprep. Zobacz poniżej sekcję sysprep dla dokładniejszego opisu.
profile UNDEF Słownik określający sprzęt maszyny wirtualnej. Zobacz poniższą tabelę.
state present Czy maszyna wirtualna powinna być zatrzymana, istnieć czy działać. Ma pierwszeństwo przed wartością stanu w profilu.
nics UNDEF Lista słowników określających interfejsy sieciowe maszyny wirtualnej. Zobacz poniżej dla dokładniejszego opisu.
cluster UNDEF Nazwa klastra, w którym zostanie utworzona maszyna wirtualna.
clone No Jeśli tak, to dyski utworzonej maszyny wirtualnej będą klonowane i niezależne od szablonu. Ten parametr jest używany tylko wtedy, gdy stan to running lub present, a maszyna VM nie istniała wcześniej.
template Pusty Nazwa szablonu, na którym powinna bazować maszyna wirtualna.
template_version UNDEF Numer wersji szablonu, który będzie używany dla VM. Domyślnie używana jest najnowsza dostępna wersja szablonu.
memory UNDEF Ilość pamięci maszyny wirtualnej.
memory_max UNDEF Górna granica pamięci maszyny wirtualnej, do której można wykonać Hot Plug pamięci.
memory_guaranteed UNDEF Ilość minimalnej gwarantowanej pamięci maszyny wirtualnej. Prefiks używa standardu IEC 60027-2 (na przykład 1GiB, 1024MiB). memory_guaranteed nie może być niższe niż memory.
cores UNDEF Liczba rdzeni CPU używanych przez maszynę wirtualną.
sockets UNDEF Liczba gniazd wirtualnych procesorów maszyny wirtualnej.
cpu_shares UNDEF Ustalanie udziałów CPU dla tej maszyny wirtualnej.
cpu_threads UNDEF Ustalanie wątków CPU dla tej maszyny wirtualnej.
disks UNDEF Lista słowników określających dodatkowe dyski maszyny wirtualnej. Zobacz poniżej dla dokładniejszego opisu.
nics UNDEF Lista słowników określających interfejsy sieciowe maszyny wirtualnej. Zobacz poniżej dla dokładniejszego opisu.
custom_properties UNDEF Właściwości przekazywane do VDSM w celu skonfigurowania różnych haków.
Properties to lista słowników, które mogą mieć następujące wartości:
name - Nazwa właściwości niestandardowej. Na przykład: hugepages, vhost, sap_agent, itp.
regexp - Wyrażenie regularne do ustawienia dla właściwości niestandardowej.
value - Wartość do ustawienia dla właściwości niestandardowej.
high_availability UNDEF Czy węzeł powinien być ustawiony jako wysoko dostępny.
high_availability_priority UNDEF Określa priorytet maszyny wirtualnej w kolejce uruchomienia i migracji. Maszyny wirtualne z wyższymi priorytetami będą uruchamiane i migrowane przed maszynami o niższych priorytetach. Wartość to liczba całkowita między 0 a 100. Im wyższa wartość, tym wyższy priorytet. Jeśli nie zostanie przekazana wartość, domyślna wartość jest ustawiana przez silnik oVirt/RHV.
io_threads UNDEF Liczba wątków IO używanych przez maszynę wirtualną. 0 oznacza, że wątkowanie IO jest wyłączone.
description UNDEF Opis maszyny wirtualnej.
operating_system UNDEF System operacyjny maszyny wirtualnej. Na przykład: rhel_7x64
type UNDEF Typ maszyny wirtualnej. Możliwe wartości: desktop, server lub high_performance
graphical_console UNDEF Przypisanie konsoli graficznej do maszyny wirtualnej.
Konsola graficzna to słownik, który może mieć następujące wartości:
headless_mode - Jeśli prawda, wyłącz konsolę graficzną dla tej maszyny wirtualnej.
protocol - 'VNC', 'Spice' lub oba.
storage_domain UNDEF Nazwa domeny pamięci, w której powinny zostać utworzone wszystkie dyski maszyny wirtualnej. Uznawane jest tylko wtedy, gdy szablon jest dostarczony.
state present Czy maszyna wirtualna powinna być zatrzymana, istnieć czy działać.
ssh_key UNDEF Klucz SSH do wdrożenia w maszynie wirtualnej. Ten parametr jest zachowany dla zgodności wstecznej i ma pierwszeństwo przed authorized_ssh_keys w słowniku cloud_init.
domain UNDEF Domenie maszyny wirtualnej. Ten parametr jest zachowany dla zgodności wstecznej i ma pierwszeństwo przed host_name w słowniku cloud_init lub sysprep.
lease UNDEF Nazwa domeny pamięci, w której znajduje się dzierżawa tej maszyny wirtualnej.
root_password UNDEF Hasło roota maszyny wirtualnej. Ten parametr jest zachowany dla zgodności wstecznej i ma pierwszeństwo przed root_password w słowniku cloud_init lub sysprep.
host UNDEF Jeśli musisz ustawić tryb cpu jako host_passthrough, musisz użyć tego parametru do zdefiniowania gospodarza do użycia wraz z polityką umiejscowienia ustawioną na pinned.
cpu_mode UNDEF Tryb CPU maszyny wirtualnej. Może być jednym z następujących: host_passthrough, host_model lub custom.
placement_policy UNDEF Konfiguracja polityki umiejscowienia maszyny wirtualnej.
boot_devices UNDEF Lista urządzeń rozruchowych, które powinny być używane podczas uruchamiania. Ważne wpisy to cdrom, hd, network.
serial_console UNDEF Jeśli prawda, włącz konsolę szeregowa VirtIO, jeśli fałsz, wyłącz ją. Domyślnie wybierane przez silnik oVirt/RHV.
serial_policy UNDEF Określ politykę numeru seryjnego dla maszyny wirtualnej. Obsługiwane są następujące opcje.
vm - Ustaw UUID maszyny wirtualnej jako jej numer seryjny.
host - Ustaw UUID hosta jako numer seryjny maszyny wirtualnej.
custom - Pozwala na określenie niestandardowego numeru seryjnego w serial_policy_value.
serial_policy_value UNDEF Pozwala na określenie niestandardowego numeru seryjnego. Ten parametr jest używany tylko wtedy, gdy serial_policy jest niestandardowa.
comment UNDEF Komentarz do maszyny wirtualnej.

Element listy disks w słowniku profile może zawierać następujące atrybuty:

Nazwa Wartość domyślna
size UNDEF Rozmiar dodatkowego dysku.
name UNDEF Nazwa dodatkowego dysku.
id UNDEF ID dysku. Jeśli przekażesz ID dysku i nazwę, dysk zostanie znaleziony przez ID i zostanie zaktualizowana jego nazwa, jeśli różni się od nazwy przekazanej w parametrze name.
storage_domain UNDEF Nazwa domeny pamięci, w której dysk powinien zostać utworzony.
interface UNDEF Interfejs dysku.
name_prefix True Jeśli prawda, nazwa maszyny wirtualnej będzie używana jako prefix nazwy dysku. Jeśli fałsz, tylko nazwa dysku będzie używana jako nazwa dysku - może być przydatne przy tworzeniu maszyny wirtualnej z szablonu z niestandardowym rozmiarem dysku.
format UNDEF Określ format dysku.
  • cow - Jeśli ustawione, dysk zostanie utworzony jako dysk szczupły, więc przestrzeń będzie przydzielana dla wolumenu w miarę potrzeby. Ten format jest również znany jako dyski z cienkim przydzieleniem
  • raw - Jeśli ustawione, przestrzeń dyskowa zostanie przydzielona od razu. Ten format jest również znany jako dyski wstępne.
bootable UNDEF Prawda, jeśli dysk powinien być rozruchowy.
activate UNDEF Prawda, jeśli dysk powinien być aktywowany.

Element listy nics w słowniku profile może zawierać następujące atrybuty:

Nazwa Wartość domyślna
name UNDEF Nazwa interfejsu sieciowego.
interface UNDEF Typ interfejsu sieciowego.
mac_address UNDEF Niestandardowy adres MAC interfejsu sieciowego, domyślnie uzyskiwany z pula MAC.
network UNDEF Logiczna sieć, którą powinien używać interfejs sieciowy VM. Jeśli sieć nie zostanie określona, używana jest pusta sieć.
profile UNDEF Profil wirtualnego interfejsu sieciowego, który ma być przypisany do interfejsu sieciowego VM.

Lista affinity_groups może zawierać następujące atrybuty:

Nazwa Wartość domyślna
cluster UNDEF (Wymagane) Nazwa klastra grupy więzi.
description UNDEF Opis czytelny dla ludzi.
host_enforcing false
  • true - VM nie może uruchomić się na hoście, jeśli nie spełnia host_rule.
  • false - VM będzie przestrzegać host_rule z miękkim egzekwowaniem.
host_rule UNDEF
  • pozytywne - VM w tej grupie muszą działać na tym hoście.
  • negatywne - VM w tej grupie mogą nie działać na tym hoście
hosts UNDEF Lista nazw hostów przypisanych do tej grupy.
name UNDEF (Wymagane) Nazwa grupy więzi.
state UNDEF Czy grupa powinna być obecna lub nieobecna.
vm_enforcing false
  • true - VM nie może się uruchomić, jeśli nie może spełnić vm_rule.
  • false - VM będzie przestrzegać vm_rule z miękkim egzekwowaniem.
vm_rule UNDEF
  • pozytywne - wszystkie VM w tej grupie próbują działać na tym samym hoście.
  • negatywne - wszystkie VM w tej grupie próbują działać na osobnych hostach.
  • wyłączone - ta grupa więzi nie ma efektu.
vms UNDEF Lista VM do przypisania do tej grupy więzi.
wait true Jeśli prawda, moduł poczeka na pożądany stan.

Lista affinity_labels może zawierać następujące atrybuty:

Nazwa Wartość domyślna
cluster UNDEF (Wymagane) Nazwa klastra grupy etykiet więzi.
hosts UNDEF Lista nazw hostów przypisanych do tej etykiety.
name UNDEF (Wymagane) Nazwa etykiety więzi.
state UNDEF Czy etykieta powinna być obecna czy nieobecna.
vms UNDEF Lista VM do przypisania do tej etykiety więzi.

Słownik cloud_init może zawierać następujące atrybuty:

Nazwa Opis
host_name Nazwa hosta, która ma być ustawiona dla maszyny wirtualnej podczas wdrożenia.
timezone Strefa czasowa, która ma być ustawiona dla maszyny wirtualnej podczas wdrożenia.
user_name Nazwa użytkownika używana do ustawienia hasła dla maszyny wirtualnej podczas wdrożenia.
root_password Hasło, które ma być ustawione dla użytkownika określonego przez parametr user_name. Domyślnie ustawiane jest dla użytkownika root.
authorized_ssh_keys Użyj tych kluczy SSH do logowania się do maszyny wirtualnej.
regenerate_ssh_keys Jeśli prawda, klucze SSH będą regenerowane na maszynie wirtualnej.
custom_script Skrypt cloud-init, który zostanie wykonany na maszynie wirtualnej podczas wdrożenia. Jest on dodawany na końcu skryptu cloud-init generowanego przez inne opcje.
dns_servers Serwery DNS, które mają być skonfigurowane na maszynie wirtualnej.
dns_search Domeny wyszukiwania DNS, które mają być skonfigurowane na maszynie wirtualnej.
nic_boot_protocol Ustaw protokół rozruchowy interfejsu sieciowego maszyny wirtualnej. Może być jednym z: none, dhcp lub static.
nic_ip_address Jeśli protokół rozruchowy jest statyczny, ustaw ten adres IP dla interfejsu sieciowego maszyny wirtualnej.
nic_netmask Jeśli protokół rozruchowy jest statyczny, ustaw tę masksę dla interfejsu sieciowego maszyny wirtualnej.
nic_gateway Jeśli protokół rozruchowy jest statyczny, ustaw tę bramę dla interfejsu sieciowego maszyny wirtualnej.
nic_name Ustaw nazwę dla interfejsu sieciowego maszyny wirtualnej.
nic_on_boot Jeśli prawda, interfejs sieciowy zostanie ustawiony do uruchomienia przy starcie.

Słownik sysprep może zawierać następujące atrybuty:

Nazwa Opis
host_name Nazwa hosta, która ma być ustawiona dla maszyny wirtualnej podczas wdrożenia.
active_directory_ou Jednostka organizacyjna Active Directory, która ma być używana do logowania użytkownika.
org_name Nazwa organizacji, która ma być ustawiona dla maszyny wirtualnej działającej w systemie Windows.
user_name Nazwa użytkownika używana do ustawienia hasła dla maszyny wirtualnej działającej w systemie Windows.
root_password Hasło, które ma być ustawione dla użytkownika określonego przez parametr user_name. Domyślnie ustawiane jest dla użytkownika root.
windows_license_key Klucz licencyjny, który ma być ustawiony dla maszyny wirtualnej działającej w systemie Windows.
input_locale Lokalizacja wejściowa maszyny wirtualnej działającej w systemie Windows.
system_locale Lokalizacja systemowa maszyny wirtualnej działającej w systemie Windows.
ui_language Język interfejsu użytkownika maszyny wirtualnej działającej w systemie Windows.
domain Domenie, która ma być ustawiona dla maszyny wirtualnej działającej w systemie Windows.
timezone Strefa czasowa, która ma być ustawiona dla maszyny wirtualnej działającej w systemie Windows.

Lista słowników cloud_init_nics reprezentujących interfejsy sieciowe, które mają być skonfigurowane przez cloud init. Ta opcja jest używana, gdy użytkownik potrzebuje skonfigurować więcej interfejsów sieciowych za pomocą cloud init. Jeśli jeden interfejs sieciowy wystarczy, użytkownik powinien używać parametrów cloud_init nic_*. Parametry nic_* będą scalane z parametrami cloud_init_nics. Słownik może zawierać następujące wartości.

Nazwa Opis
nic_boot_protocol Ustaw protokół rozruchowy interfejsu sieciowego maszyny wirtualnej. Może być jednym z: none, dhcp lub static.
nic_ip_address Jeśli protokół rozruchowy jest statyczny, ustaw ten adres IP dla interfejsu sieciowego maszyny wirtualnej.
nic_netmask Jeśli protokół rozruchowy jest statyczny, ustaw tę masksę dla interfejsu sieciowego maszyny wirtualnej.
nic_gateway Jeśli protokół rozruchowy jest statyczny, ustaw tę bramę dla interfejsu sieciowego maszyny wirtualnej.
nic_name Ustaw nazwę dla interfejsu sieciowego maszyny wirtualnej.
nic_on_boot Jeśli prawda, interfejs sieciowy zostanie ustawiony do uruchomienia przy starcie.

Zależności

Brak.

Przykładowy Playbook

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

  vars_files:
    # Zawiera zaszyfrowaną zmienną `engine_password` przy użyciu ansible-vault
    - passwords.yml

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

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

    db_vm:
      cluster: production
      domain: example.com
      template: rhel7
      memory: 4GiB
      cores: 1
      ssh_key: ssh-rsa AAA...LGx user@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: production
        vm_enforcing: true
        vm_rule: negative
        vms:
          - postgresql-vm-0
          - postgresql-vm-1

  roles:
    - ovirt.vm-infra

Przykład poniżej pokazuje, jak używać inwentarza stworzonego przez rolę ovirt.vm-infra w kolejnej grze.

---
- name: Wdrożenie maszyny Apache
  hosts: localhost
  connection: local
  gather_facts: false

  vars_files:
    # Zawiera zaszyfrowaną zmienną `engine_password` przy użyciu ansible-vault
    - passwords.yml

  vars:
    wait_for_ip: true

    httpd_vm:
      cluster: production
      state: running
      domain: example.com
      template: rhel7
      memory: 2GiB
      cores: 2
      ssh_key: ssh-rsa AAA...LGx user@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: Wdrożenie Apache na VM
  hosts: ovirt_tag_apache

  vars_files:
    - apache_vars.yml

  roles:
    - geerlingguy.apache

asciicast

Licencja

Licencja Apache 2.0

O projekcie

Role to manage virtual machine infrastructure in oVirt.

Zainstaluj
ansible-galaxy install ovirt.vm-infra
Licencja
apache-2.0
Pobrania
65.4k
Właściciel
Open Virtual Datacenter