ovirt.infra
oVirt Infra
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.infra umożliwia skonfigurowanie infrastruktury oVirt, w tym: pul mak, centrów danych, klastrów, sieci, hostów, użytkowników i grup.
Maszyna docelowa
Jeśli używasz tej roli do zarządzania użytkownikami, będzie ona korzystać z ovirt-aaa-jdbc-tool, który znajduje się na maszynie silnika, więc musisz wykonać tę rolę na maszynie silnika.
Uwaga
Proszę pamiętać, że podczas instalacji tej roli z Ansible Galaxy należy wykonać następujące polecenie:
$ ansible-galaxy install ovirt.infra
To pobierze rolę do katalogu o tej samej nazwie, co podano w linii poleceń, w tym przypadku ovirt.infra. Należy jednak zauważyć, że jest to wrażliwe na wielkość liter, więc jeśli podasz na przykład OVIRT.infra, pobierze tę samą rolę, ale doda ją do katalogu o nazwie OVIRT.infra, więc musisz zawsze używać tej roli z wielką literą. Uważaj więc, jak podajesz nazwę roli w linii poleceń.
Dla instalacji RPM instalujemy trzy starsze nazwy: ovirt.infra, oVirt.infra i ovirt-infra.
Możesz używać którekolwiek z tych nazw. Ta dokumentacja i przykłady w tym repozytorium używają nazwy ovirt.infra.
Nazwy ról oVirt.infra i ovirt-infra są przestarzałe.
Wymagania
- oVirt Python SDK wersja 4.3
- Ansible wersja 2.9
Zmienne roli
Centrum danych
Aby skonfigurować/wyczyścić centrum danych, możesz użyć następujących zmiennych:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| data_center_name | UNDEF | Nazwa centrum danych. |
| data_center_description | UNDEF | Opis centrum danych. |
| data_center_local | false | Określa, czy centrum danych jest wspólne, czy lokalne. |
| compatibility_version | UNDEF | Wersja kompatybilności centrum danych. |
| data_center_state | present | Określa, czy centrum danych powinno być obecne czy nieobecne. |
| recursive_cleanup | false | Określa, czy usunąć wszystkie jednostki w centrum danych rekurencyjnie. Ważne tylko, gdy stan == nieobecny. |
| format_storages | false | Określa, czy sformatować WSZYSTKIE magazyny, które mają zostać usunięte jako część centrum danych. Ważne tylko, gdy data_center_state == nieobecny i recursive_cleanup == true. |
Pule MAC
Aby skonfigurować pule MAC, możesz zdefiniować zmienną listy o nazwie mac_pools.
Elementy w liście mac_pools mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| mac_pool_name | UNDEF | Nazwa puli MAC do zarządzania. |
| mac_pool_ranges | UNDEF | Lista zakresów MAC. Zakres powinien być oddzielony przecinkiem. Np.: 00:1a:4a:16:01:51,00:1a:4a:16:01:61 |
| mac_pool_allow_duplicates | UNDEF | Jeśli (true) zezwolić na wielokrotne użycie adresu MAC w puli. Wartość domyślna ustawiona przez silnik oVirt na false. |
Klastry
Aby skonfigurować klastry, możesz zdefiniować zmienną listy o nazwie clusters.
Elementy w liście clusters mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| name | UNDEF (Wymagane) | Nazwa klastra. |
| state | present | Stan klastra. |
| cpu_type | Intel Conroe Family | Typ CPU klastra. |
| profile | UNDEF | Profil klastra. Można wybrać predefiniowany profil klastra, zobacz tabele poniżej. |
| ballooning | UNDEF | Jeśli prawda, włącz optymalizację pamięci balonowej. Pamięć balonowa jest używana do dynamicznego redistribucji/odzyskiwania pamięci hosta na podstawie potrzeb VM. |
| description | UNDEF | Opis klastra. |
| ksm | UNDEF | Jeśli prawda, MoM zezwala na uruchomienie scalania tego samego typu stron jądra, gdy to konieczne i gdy może przynieść korzyści w zakresie oszczędzania pamięci, które przeważają nad kosztami CPU. |
| ksm_numa | UNDEF | Jeśli prawda, włącza KSM dla najlepszego działania wewnątrz węzłów NUMA. |
| vm_reason | UNDEF | Jeśli prawda, włącza opcjonalne pole z przyczyną, gdy maszyna wirtualna jest wyłączana z menedżera, umożliwiając administratorowi podanie wyjaśnienia dla konserwacji. |
| host_reason | UNDEF | Jeśli prawda, włącza opcjonalne pole z przyczyną, gdy host jest umieszczany w trybie konserwacji z menedżera, umożliwiając administratorowi podanie wyjaśnienia dla konserwacji. |
| memory_policy alias: performance_preset |
UNDEF |
|
| migration_policy | UNDEF | Polityka migracji definiuje warunki dla na żywo migracji maszyn wirtualnych w przypadku awarii hosta. Obsługiwane polityki:
|
| scheduling_policy | UNDEF | Polityka harmonogramowania używana przez klaster. |
| ha_reservation | UNDEF | Jeśli prawda, umożliwia oVirt/RHV monitorowanie pojemności klastra dla wysoko dostępnych maszyn wirtualnych. |
| fence_enabled | UNDEF | Jeśli prawda, włącza zabezpieczenia w klastrze. |
| fence_connectivity_threshold | UNDEF | Próg używany przez fence_skip_if_connectivity_broken. |
| fence_skip_if_connectivity_broken | UNDEF | Jeśli prawda, zabezpieczenia będą tymczasowo wyłączone, jeśli procent hostów w klastrze, które doświadczają problemów z łącznością, jest większy lub równy zdefiniowanemu progowi. |
| fence_skip_if_sd_active | UNDEF | Jeśli prawda, wszyscy hostowie w klastrze, którzy są nieodpowiedni i nadal połączeni ze przechowywaniem, nie będą poddawani zabezpieczeniu. |
| mac_pool | UNDEF | Nazwa puli MAC. |
| comment | UNDEF | Komentarz dotyczący klastra. |
| migration_bandwidth | UNDEF | Ustawienia przepustowości definiują maksymalną przepustowość zarówno dla migracji wychodzących, jak i przychodzących na hosta. Obsługiwane opcje przepustowości:
|
| migration_bandwidth_limit | UNDEF | Ustawia niestandardowy limit przepustowości migracji. |
| network | UNDEF | Sieć zarządzająca klastra do uzyskania dostępu do hostów klastra. |
| resilience_policy | UNDEF | Polityka odporności definiuje, jak maszyny wirtualne są priorytetyzowane podczas migracji. Obsługiwane wartości:
|
| rng_sources | UNDEF | Lista, która określa urządzenia generatora liczb losowych, które wszystkie hosty w klastrze będą używać. Obsługiwane generatory to: hwrng i random. |
| serial_policy | UNDEF | Określa politykę numerów seryjnych dla maszyn wirtualnych w klastrze. Obsługiwane opcje:
|
| serial_policy_value | UNDEF | Pozwala użytkownikowi określić niestandardowy numer seryjny. Ten parametr jest używany tylko wtedy, gdy serial_policy jest niestandardowe. |
| spice_proxy | UNDEF | Serwer proxy, przez który klient SPICE połączy się z maszynami wirtualnymi. Adres musi być w następującym formacie: protokół://[host]:[port] |
| switch_type | UNDEF | Typ przełącznika używanego przez wszystkie sieci w danym klastrze. Może to być dawny typ wykorzystujący most linuxowy lub ovs wykorzystujący Open vSwitch. |
| threads_as_cores | UNDEF | Jeśli prawda, expose'owane wątki hosta będą traktowane jako rdzenie, które mogą być wykorzystywane przez maszyny wirtualne. |
| trusted_service | UNDEF | Jeśli prawda, włącza integrację z serwerem OpenAttestation. |
| virt | UNDEF | Jeśli prawda, hosty w tym klastrze będą używane do uruchamiania maszyn wirtualnych. Domyślnie jest to prawda. |
| gluster | UNDEF | Jeśli prawda, hosty w tym klastrze będą używane jako węzły serwera przechowywania Gluster, a nie do uruchamiania maszyn wirtualnych. |
| external_network_providers | UNDEF | Lista, która określa dostępnych zewnętrznych dostawców sieci w klastrze. |
Więcej informacji o parametrach można znaleźć w dokumentacji modułu ovirt_cluster.
Profil klastra
Możliwe opcje profile klastra to development i production, ich wartości domyślne zostały opisane poniżej:
Development
Profil development klastra ma wstępnie zdefiniowane następujące wartości:
| Parametr | Wartość |
|---|---|
| ballooning | true |
| ksm | true |
| host_reason | false |
| vm_reason | false |
| memory_policy | server |
| migration_policy | post_copy |
Production
Profil production klastra ma wstępnie zdefiniowane następujące wartości:
| Parametr | Wartość |
|---|---|
| ballooning | false |
| ksm | false |
| host_reason | true |
| vm_reason | true |
| memory_policy | disabled |
| migration_policy | suspend_workload |
| scheduling_policy | evenly_distributed |
| ha_reservation | true |
| fence_enabled | true |
| fence_skip_if_connectivity_broken | true |
| fence_skip_if_sd_active | true |
Hosty
Aby skonfigurować hosty, możesz zdefiniować zmienną listy o nazwie hosts.
Elementy w liście hosts mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| name | UNDEF (Wymagane) | Nazwa hosta. |
| state | present | Określa, czy host jest obecny, czy nieobecny. |
| address | UNDEF | Adres IP lub FQDN hosta. |
| password | UNDEF | Hasło root hosta. Wymagane, jeśli public_key jest false. |
| public_key | UNDEF | Jeśli true, klucz publiczny powinien być użyty do uwierzytelnienia do hosta. |
| cluster | UNDEF (Wymagane) | Klaster, do którego musi się połączyć host. |
| timeout | 1800 | Maksymalny czas oczekiwania na stan UP hosta. |
| poll_interval | 20 | Interwał pollowania do sprawdzenia stanu hosta. |
| hosted_engine | UNDEF | Określa, czy host jest 'wdrożony' jako hostowany silnik. |
| power_management | UNDEF | Zarządzanie zasilaniem. Możesz wybrać predefiniowane zmienne, zobacz tabele poniżej. |
Jeśli z jakiegokolwiek powodu nie możesz użyć zmiennej hosts w swoim playbooku, możesz zmienić nazwę tej zmiennej, nadpisując wartość zmiennej hosts_var_name. Przykład:
- name: Ustaw infrastruktura oVirt
hosts: engine
roles:
- role: ovirt.infra
vars:
hosts_var_name: ovirt_hosts
ovirt_hosts:
- name: host_0
state: present
address: 1.2.3.4
password: 123456
cluster: Default
Zarządzanie zasilaniem hosta
Zarządzanie zasilaniem power_management ma wstępnie zdefiniowane następujące wartości:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| address | UNDEF | Adres interfejsu zarządzania zasilaniem. |
| state | present | Czy zarządzanie zasilaniem hosta ma być obecne/nieobecne. |
| username | UNDEF | Nazwa użytkownika do połączenia z interfejsem zarządzania zasilaniem. |
| password | UNDEF | Hasło użytkownika podanego w parametrze C(username). |
| type | UNDEF | Typ zarządzania zasilaniem. Zdefiniowane predefiniowane wartości oVirt/RHV to drac5, ipmilan, rsa, bladecenter, alom, apc, apc_snmp, eps, wti, rsb, cisco_ucs, drac7, hpblade, ilo, ilo2, ilo3, ilo4, ilo_ssh, ale użytkownik może określić typ niestandardowy. |
| options | UNDEF | Słownik dodatkowych opcji agenta zabezpieczeń (w tym slot zarządzania zasilaniem). Dodatkowe informacje o opcjach można znaleźć w https://github.com/ClusterLabs/fence-agents/blob/master/doc/FenceAgentAPI.md. |
| port | UNDEF | Port interfejsu zarządzania zasilaniem. |
Sieci
Sieci logiczne
Aby skonfigurować sieci logiczne, możesz zdefiniować zmienną listy o nazwie logical_networks.
Lista logical_networks może zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| name | UNDEF | Nazwa sieci. |
| state | present | Określa, czy stan sieci jest obecny, czy nieobecny. |
| vlan_tag | UNDEF | Określ tag VLAN. |
| vm_network | True | Jeśli prawda, sieć będzie oznaczona jako sieć dla VM. |
| mtu | UNDEF | Maksymalna jednostka przesyłania (MTU) sieci. |
| description | UNDEF | Opis sieci. |
| clusters | UNDEF | Lista słowników opisujących, jak sieć jest zarządzana w określonym klastrze. |
| label | UNDEF | Nazwa etykiety przypisanej do sieci. |
Więcej informacji o parametrach można znaleźć w dokumentacji modułu ovirt_network.
Sieci hosta
Aby skonfigurować sieci hosta, możesz zdefiniować zmienną listy o nazwie host_networks.
Lista host_networks może zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| name | UNDEF | Nazwa hosta. |
| state | UNDEF | Określa, czy stan sieci jest obecny, czy nieobecny. |
| check | UNDEF | Jeśli prawda, weryfikuje połączenie między hostem a silnikiem. |
| save | UNDEF | Jeśli prawda, konfiguracja sieci będzie trwała, domyślnie jest tymczasowa. |
| bond | UNDEF | Słownik opisujący bond sieciowy. |
| networks | UNDEF | Słownik opisujący sieci, które mają być podłączone do interfejsu lub bond. |
| labels | UNDEF | Lista nazw etykiety sieci do przypisania do bond lub interfejsu. |
| interface | UNDEF | Nazwa interfejsu sieciowego, do którego powinna być podłączona sieć logiczna. |
Więcej informacji o parametrach można znaleźć w dokumentacji modułu ovirt_host_network.
Magazyny
Aby skonfigurować magazyny, możesz zdefiniować zmienną słownikową o nazwie storages.
Wartość elementu w słowniku storages może zawierać następujące parametry (kluczami są zawsze nazwy magazynów):
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| master | false | Jeśli prawda, magazyn zostanie dodany jako pierwszy magazyn, co oznacza, że będzie to magazyn główny. |
| domain_function | data | Funkcja domeny magazynu. Możliwe wartości to:
|
| localfs | UNDEF | Słownik definiujący lokalne przechowywanie. |
| nfs | UNDEF | Słownik definiujący przechowywanie NFS. |
| iscsi | UNDEF | Słownik definiujący przechowywanie iSCSI. |
| posixfs | UNDEF | Słownik definiujący przechowywanie PosixFS. |
| fcp | UNDEF | Słownik definiujący przechowywanie FCP. |
| glusterfs | UNDEF | Słownik definiujący przechowywanie glusterFS. |
| discard_after_delete | UNDEF | Jeśli prawda, bloki domeny magazynu zostaną usunięte po usunięciu. Włączone domyślnie. Ten parametr dotyczy tylko magazynów w oparciu o blok. |
Więcej informacji o parametrach można znaleźć w dokumentacji modułu ovirt_storage_domain.
AAA JDBC
Użytkownicy
Aby skonfigurować użytkowników w dostawcy AAA JDBC, możesz zdefiniować zmienną słownikową o nazwie users.
Elementy w liście users mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| state | present | Określa, czy użytkownik jest obecny, czy nieobecny. |
| name | UNDEF | Nazwa użytkownika. |
| authz_name | UNDEF | Dostawca autoryzacji użytkownika. |
| password | UNDEF | Hasło użytkownika. |
| valid_to | UNDEF | Określa datę, do której konto pozostaje ważne. |
| attributes | UNDEF | Słownik atrybutów dotyczących użytkownika. Dostępne atrybuty:
|
Grupy użytkowników
Aby skonfigurować grupy użytkowników w dostawcy AAA JDBC, możesz zdefiniować zmienną słownikową o nazwie user_groups.
Elementy w liście user_groups mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| state | present | Określa, czy grupa jest obecna, czy nieobecna. |
| name | UNDEF | Nazwa grupy. |
| authz_name | UNDEF | Dostawca autoryzacji grupy. |
| users | UNDEF | Lista użytkowników, którzy należą do tej grupy. |
Uprawnienia
Aby skonfigurować uprawnienia użytkowników lub grup, możesz zdefiniować zmienną słownikową o nazwie permissions.
Elementy w liście permissions mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| state | present | Określa, czy stan uprawnienia jest obecny, czy nieobecny. |
| user_name | UNDEF | Użytkownik, dla którego zarządzane są uprawnienia. |
| group_name | UNDEF | Nazwa grupy, dla której zarządzane są uprawnienia. |
| authz_name | UNDEF | Nazwa dostawcy autoryzacji grupy lub użytkownika. |
| role | UNDEF | Rola, która ma być przypisana do użytkownika lub grupy. |
| object_type | UNDEF | Typ obiektu, który powinien być użyty do przypisania uprawnienia. Możliwe typy obiektów to:
|
| object_name | UNDEF | Nazwa obiektu, do którego powinno być przypisane uprawnienie. |
Zewnętrzni dostawcy
Aby skonfigurować zewnętrznych dostawców, możesz zdefiniować zmienną słownikową o nazwie external_providers.
Elementy w liście external_providers mogą zawierać następujące parametry:
| Nazwa | Wartość domyślna | Opis |
|---|---|---|
| name | UNDEF (Wymagane) | Nazwa zewnętrznego dostawcy. |
| state | present | Stan zewnętrznego dostawcy. Wartości mogą być:
|
| type | UNDEF (Wymagane) | Typ zewnętrznego dostawcy. Wartości mogą być:
|
| url | UNDEF | URL, pod jakim hostowany jest zewnętrzny dostawca. Wymagane, jeśli stan jest obecny. |
| username | UNDEF | Nazwa użytkownika używana do logowania do zewnętrznego dostawcy. Dotyczy wszystkich typów. |
| password | UNDEF | Hasło użytkownika określonego w parametrze username. Dotyczy wszystkich typów. |
| tenant | UNDEF | Nazwa tenantu. |
| auth_url | UNDEF | URL autoryzacji Keystone dla dostawcy openstack. Wymagane dla:
|
| data_center | UNDEF | Nazwa centrum danych, do którego powinien być podłączony dostawca. Dotyczy typu os_volume. |
| authentication_keys | UNDEF | Lista kluczy autoryzacyjnych. Każdy klucz jest reprezentowany przez słownik, np. {'uuid': 'my-uuid', 'value': 'secret value'}. Dodano w ansible 2.6. Dotyczy typu os_volume. |
Więcej informacji o parametrach można znaleźć w dokumentacji modułu ovirt_external_provider.
Przykład Playbooka
---
- name: oVirt infra
hosts: localhost
connection: local
gather_facts: false
vars:
engine_fqdn: ovirt-engine.example.com
engine_user: admin@internal
engine_password: 123456
engine_cafile: /etc/pki/ovirt-engine/ca.pem
data_center_name: mydatacenter
compatibility_version: 4.1
mac_pools:
- mac_pool_name: "Default"
mac_pool_ranges:
- "00:1a:4a:16:01:51,00:1a:4a:16:01:61"
clusters:
- name: production
cpu_type: Intel Conroe Family
profile: production
hosts:
- name: myhost
address: 1.2.3.4
cluster: production
password: 123456
- name: myhost1
address: 5.6.7.8
cluster: production
password: 123456
power_management:
address: 9.8.7.6
username: root
password: password
type: ipmilan
options:
myoption1: x
myoption2: y
slot: myslot
storages:
mynfsstorage:
master: true
state: present
nfs:
address: 10.11.12.13
path: /the_path
myiscsistorage:
state: present
iscsi:
target: iqn.2014-07.org.ovirt:storage
port: 3260
address: 100.101.102.103
username: username
password: password
lun_id: 3600140551fcc8348ea74a99b6760fbb4
mytemplates:
domain_function: export
nfs:
address: 100.101.102.104
path: /exports/nfs/exported
myisostorage:
domain_function: iso
nfs:
address: 100.101.102.105
path: /exports/nfs/iso
logical_networks:
- name: mynetwork
clusters:
- name: production
assigned: yes
required: no
display: no
migration: yes
gluster: no
host_networks:
- name: myhost1
check: true
save: true
bond:
name: bond0
mode: 2
interfaces:
- eth2
- eth3
networks:
- name: mynetwork
boot_protocol: dhcp
users:
- name: john.doe
authz_name: internal-authz
password: 123456
valid_to: "2018-01-01 00:00:00Z"
- name: joe.doe
authz_name: internal-authz
password: 123456
valid_to: "2018-01-01 00:00:00Z"
user_groups:
- name: admins
authz_name: internal-authz
users:
- john.doe
- joe.doe
permissions:
- state: present
user_name: john.doe
authz_name: internal-authz
role: UserROle
object_type: cluster
object_name: production
- state: present
group_name: admins
authz_name: internal-authz
role: UserVmManager
object_type: cluster
object_name: production
external_providers:
- name: myglance
type: os_image
state: present
url: http://externalprovider.example.com:9292
username: admin
password: secret
tenant: admin
auth_url: http://externalprovider.example.com:35357/v2.0/
pre_tasks:
- name: Zaloguj się do oVirt
ovirt_auth:
hostname: "{{ engine_fqdn }}"
username: "{{ engine_user }}"
password: "{{ engine_password }}"
ca_file: "{{ engine_cafile | default(omit) }}"
insecure: "{{ engine_insecure | default(true) }}"
tags:
- always
roles:
- ovirt.infra
post_tasks:
- name: Wyloguj się z oVirt
ovirt_auth:
state: absent
ovirt_auth: "{{ ovirt_auth }}"
tags:
- always
Licencja
Apache License 2.0
ansible-galaxy install ovirt.infra