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.
|
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 |
|
host_rule | UNDEF |
|
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 |
|
vm_rule | UNDEF |
|
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
Licencja
Licencja Apache 2.0
Role to manage virtual machine infrastructure in oVirt.
ansible-galaxy install ovirt.vm-infra