OndrejHome.ha-cluster-pacemaker
ha-cluster-pacemaker
Rola do konfiguracji i rozbudowy podstawowego klastra pacemaker na systemach CentOS/RHEL 6/7/8/9, AlmaLinux 8/9, Rocky Linux 8/9, Fedora 31/32/33/34/35/36/37/38/39/40 oraz CentOS 8/9 Stream.
Rola ta może skonfigurować następujące elementy klastra pacemaker:
- włączyć potrzebne repozytoria systemowe
- zainstalować niezbędne pakiety
- utworzyć i skonfigurować użytkowników oraz grupy do uruchamiania klastra pacemaker
- skonfigurować zaporę
- wygenerować wpisy w
/etc/hosts
- autoryzować węzły klastra
- utworzyć lub rozbudować klaster (sprawdź
allow_cluster_expansion
)- klaster z "2 lub więcej" węzłami
- pojedyncze serce, rrp lub knet z maksymalnie 8 linkami
- zdalne węzły
- używać automatycznie wykrytych lub wybranych interfejsów/IP do serca
- uruchomić i włączyć klaster przy starcie
- skonfigurować urządzenia stonith
- domyślnie zainstalować i skonfigurować urządzenia stonith
fence_xvm
- opcjonalnie skonfigurować
fence_kdump
- opcjonalnie skonfigurować
fence_vmware
(SOAP/REST) lub inne urządzeniafence_*
- opcjonalnie skonfigurować
fence_aws
- domyślnie zainstalować i skonfigurować urządzenia stonith
Rola w pełni wspiera tryb --check
dla domyślnej konfiguracji i częściowo wspiera go dla większości innych opcji.
Podczas zgłaszania problemu prosimy o podanie następujących informacji (jeżeli to możliwe):
- używana wersja ansible
- system operacyjny, z którego uruchomiono ansible
- playbook i plik inwentaryzacyjny, które spowodowały błąd (usuń poufne informacje, gdzie to możliwe)
- komunikat błędu lub opis nieprawidłowego działania, które napotkałeś
Wymagania
Ta rola zależy od roli ondrejhome.pcs-modules-2.
Ansible 2.8 lub nowszy. (Uwaga: istnieje możliwość używania wcześniejszych wersji, w przypadku problemów spróbuj zaktualizować Ansible do 2.8+)
RHEL 6/7/8: Oczekuje się, że maszyny będą już zarejestrowane. Rola domyślnie włączy dostęp do kanału 'High Availability' lub 'Resilient storage'. Jeśli to nie jest pożądane, sprawdź zmienną enable_repos
.
RHEL/CentOS 7: Ta rola wymaga co najmniej wersji 2.9
biblioteki python-jinja2
. Jeśli nie jest obecna, możesz napotkać opisany problem w Problemie #6. Aby uzyskać zaktualizowaną wersję python-jinja2
oraz jej zależności, możesz skorzystać z następującego repozytorium RPM - https://copr.fedorainfracloud.org/coprs/ondrejhome/ansible-deps-el7/ dla zarówno CentOS 7, jak i RHEL 7.
CentOS 8 Stream Testowane z wersją 20240129, minimalna zalecana wersja ansible to 2.11.0, co zaczyna identyfikować system jako 'CentOS' zamiast 'RedHat' (w przeciwieństwie do CentOS Linux). Starsze wersje CentOS 8 Stream 20201211 minimalnie użyteczna wersja ansible to 2.9.16/2.10.4. Wersja 2.8.18 nie działała w momencie testowania. To jest związane z Service is in unknown state #71528.
CentOS 9 Stream Testowane z wersją 20240129, minimalna rekomendowana wersja ansible to 2.11.0.
Debian Buster Testowane z wersją 20210310 z wersją ansible 2.10 i Debian Bullseye Testowane z wersją 20220326 z wersją ansible 2.12. Część Debiana tej roli nie obejmuje konfiguracji stonith i konfiguracji zapory. Uwaga: Ta rola przeszła tylko ograniczone testy na Debianie - nie wszystkie funkcje tej roli były testowane.
Debian Bookworm Testowane z wersją ansible 2.14 i Debian Bookwork. Część Debiana tej roli nie obejmuje konfiguracji stonith i konfiguracji zapory. Uwaga: Ta rola przeszła tylko ograniczone testy na Debianie - nie wszystkie funkcje tej roli były testowane.
Wersje ansible 2.9.10 i 2.9.11 zakończą się błędem "'hostvars' is undefined"
przy próbie skonfigurowania zdalnych węzłów. Dotyczy to tylko, gdy jest co najmniej jeden węzeł z cluster_node_is_remote=True
. Unikaj tych wersji Ansible, jeśli planujesz skonfigurować zdalne węzły za pomocą tej roli.
Na CentOS Linux 8 musisz upewnić się, że repozytoria BaseOS i Appstream działają poprawnie. Ponieważ CentOS Linux 8 jest w fazie End-Of-Life, ta rola skonfiguruje repozytorium HA, aby wskazywało na vault.centos.org, jeśli wymagana jest konfiguracja repozytoriów (enable_repos: true
) (domyślnie tak jest).
Distro wersji pcs-0.11 (AlmaLinux 9, Rocky Linux 9, RHEL 9, Fedora 36/37/38) są obsługiwane tylko z wersją ondrejhome.pcs-modules-2 27.0.0 lub wyższą.
Zmienne Roli
użytkownik używany do autoryzowania węzłów klastra
cluster_user: 'hacluster'
hasło dla użytkownika używanego do autoryzowania węzłów klastra
cluster_user_pass: 'testtest'
grupa, do której należy użytkownik klastra (powinna być 'haclient')
cluster_group: 'haclient'
nazwa klastra
cluster_name: 'pacemaker'
konfiguracja zapory dla klastra, UWAGA w RHEL/CentOS 6 zastępuje to plik konfiguracyjny iptables!
cluster_firewall: true
włączyć klaster przy starcie na normalnych (nie pacemaker_remote) węzłach
cluster_enable_service: true
skonfigurować klaster z urządzeniem stonith fence_xvm ? To skopiuje /etc/cluster/fence_xvm.key do węzłów i doda urządzenia stonith do klastra. UWAGA: musisz zdefiniować 'vm_name' w inwentarzu dla każdego węzła klastra.
cluster_configure_fence_xvm: true
skonfigurować klaster z urządzeniem stonith fence_vmware_soap/fence_vmware_rest ? To zainstaluje agent stonith fence_vmware_soap/fence_vmware_rest i skonfiguruje go. Kiedy to jest włączone, musisz określić 3 dodatkowe zmienne z informacjami na temat dostępu do vCenter. UWAGA: Musisz również zdefiniować 'vm_name' w inwentarzu dla każdego węzła klastra, określając nazwę lub UUID VM jak widoczna na hypervisorze lub w wyniku komendy
fence_vmware_soap -o list
/fence_vmware_rest
.cluster_configure_fence_vmware_soap: false cluster_configure_fence_vmware_rest: false fence_vmware_ipaddr: '' fence_vmware_login: '' fence_vmware_passwd: ''
Możesz opcjonalnie zmienić dodatkowe atrybuty przekazywane do fence_vmware_soap/fence_vmware_rest za pomocą zmiennej
fence_vmware_options
. Domyślnie ta zmienna włącza szyfrowanie, ale wyłącza weryfikację certyfikatów.fence_vmware_options: 'ssl="1" ssl_insecure="1"'
UWAGA: Można skonfigurować tylko jedną z fence_vmware_soap/fence_vmware_rest, ponieważ urządzenia stonith dzielą tę samą nazwę.
skonfigurować klaster z urządzeniem stonith fence_kdump ? To uruchamia usługę kdump i definiuje urządzenia stonith fence_kdump. UWAGA: jeśli usługa kdump nie jest uruchomiona, to nie zadziała poprawnie ani wcale.
cluster_configure_fence_kdump: false
skonfigurować klaster z urządzeniem stonith fence_aws ? Musisz podać identyfikator instancji/region AWS i instancję profil, która może uruchamiać/zatrzymywać instancje dla tego klastra. Kiedy to jest włączone, musisz określić zmienną
fence_aws_region
z informacjami na temat regionu AWS. UWAGA: Jeśli nie skonfigurujesz profilu instancji, to nie zadziała poprawnie ani wcale.cluster_configure_fence_aws: false fence_aws_region: ''
UWAGA: Musisz również zdefiniować
instance_id
w inwentarzu dla każdego węzła klastra, określając identyfikator instancji widoczny w konsoli AWS lub w wyniku komendyfence_aws -o list
(man fence_aws).Możesz opcjonalnie zmienić dodatkowe atrybuty przekazywane do fence_aws za pomocą zmiennej
fence_aws_options
.fence_aws_options: ''
UWAGA: Przykłady odpowiednich opcji dla niektórych konkretnych zastosowań można znaleźć w poniższych dokumentach.
https://access.redhat.com/articles/4175371#create-stonith
https://docs.aws.amazon.com/sap/latest/sap-hana/sap-hana-on-aws-cluster-resources-1.htmlJak mapować urządzenia do klastra? Domyślnie dla każdego węzła klastra tworzony jest osobny urządzenie stonith ('one-device-per-node'). Niektóre agenty stonith mogą zabezpieczać wiele węzłów przy użyciu jednego urządzenia stonith ('one-device-per-cluster') i mogą sprawiać problemy przy użyciu wielu urządzeń z powodu ograniczeń dotyczących liczby logowania użytkowników. Dostępne opcje:
one-device-per-node
- (domyślnie) - jedno urządzenie stonith na każdy węzeł klastraone-device-per-cluster
- (na wspieranych agentach stonith) - tylko jedno urządzenie stonith dla całego klastra, wspierane agenty stonith:fence_vmware_rest
,fence_vmware_soap
,fence_xvm
,fence_kdump
cluster_configure_stonith_style: 'one-device-per-node'
(RHEL/CentOS/AlmaLinux/Rocky) włączyć repozytoria zawierające potrzebne pakiety
enable_repos: true
(tylko RHEL) włączyć rozszerzone repozytoria aktualizacji (EUS) zawierające potrzebne pakiety
enable_eus_repos: false
(tylko RHEL) włączyć repozytoria aktualizacji SAP Solutions (E4S) zawierające potrzebne pakiety
enable_e4s_repos: false
(tylko RHEL) włączyć repozytoria Beta zawierające potrzebne pakiety
enable_beta_repos: false
(tylko RHEL) typ włączonych repozytoriów, pamiętaj, że repozytoria E4S mają dostępny tylko typ 'ha'
- ha - Wysoka Dostępność
- rs - Odporne Przechowywanie
repos_type: 'ha'
(tylko RHEL) custom_repository umożliwia włączenie repozytorium o dowolnej nazwie. Nazwy repozytoriów RHEL8 można znaleźć na http://downloads.redhat.com/redhat/rhel/rhel-8-beta/rhel-8-beta.repo
custom_repository: ''
(tylko CentOS) zainstalować potrzebne pakiety z nośnika CD-ROM dostępnego pod /dev/cdrom
use_local_media: false
Włącz lub wyłącz interfejs użytkownika PCSD. Domyślnie rola utrzymuje domyślną wartość instalacji, co oznacza, że interfejs użytkownika PCSD jest wyłączony w CentOS/RHEL 6.X, a włączony w CentOS/RHEL 7.X.
true
lubfalse
można przekazać do tej zmiennej, aby upewnić się, że interfejs użytkownika PCSD jest włączony lub wyłączony.enable_pcsd_gui: 'nochange'
Protokół transportu klastra. Domyślnie ta rola będzie używać tego, co jest domyślne dla danego systemu operacyjnego. Dla CentOS/RHEL 6.X oznacza to 'udp' (UDP multicast), a dla CentOS/RHEL 7.X oznacza to 'udpu' (UDP unicast). Ta zmienna akceptuje następujące opcje:
default
,udp
iudpu
.cluster_transport: 'default'
Zezwól na dodawanie węzłów do istniejącego klastra podczas używania wersji ondrejhome.pcs-modules-2 v16 lub nowszej.
allow_cluster_expansion: false
Interfejs sieciowy klastra. Jeśli określony, rola przypisze hosty do podstawowego adresu IPv4 z tego interfejsu. Domyślnie używany jest adres IPv4 z
ansible_default_ipv4
lub pierwszy IPv4 zansible_all_ipv4_addresses
. Na przykład, aby użyć podstawowego adresu IPv4 z interfejsuens8
, użyjcluster_net_iface: 'ens8'
. Interfejs musi istnieć na wszystkich węzłach klastra.cluster_net_iface: ''
Interfejs sieciowy redundantny. Jeśli określony, rola skonfiguruje korosycynowy redundantny pierścień z użyciem domyślnego IPv4 z tego interfejsu. Interfejs musi istnieć na wszystkich węzłach klastra.
rrp_interface: ''
UWAGA: możesz zdefiniować tę zmienną albo w defaults/main.yml, w takim przypadku ta sama nazwa rrp_interface jest używana dla wszystkich hostów w pliku hosts. Możesz również określić interfejs dla każdego hosta obecnego w pliku hosts: to pozwala na użycie konkretnej nazwy interfejsu dla każdego hosta (jeśli nie mają tej samej nazwy interfejsu). Zamiast definiować rrp_interface dla hosta, można zdefiniować rrp_ip: w tym przypadku ten alternatywny ip jest używane do konfiguracji RRP korosycyn (ten IP musi być inny niż domyślny adres IPv4 hosta). Umożliwia to użycie alternatywnego IP należącego do tego samego podstawowego interfejsu.
Czy dodać hosty do /etc/hosts. Domyślnie wpis dla nazwy hosta podanej przez
cluster_hostname_fact
jest dodawany dla każdego hosta do/etc/hosts
. Można to wyłączyć, ustawiająccluster_etc_hosts
nafalse
.cluster_etc_hosts: true
Który fakt ansible użyć jako nazwę hosta węzłów klastra. Domyślnie ta rola korzysta z faktu
ansible_hostname
jako nazwy hosta dla każdego hosta. W niektórych środowiskach może być przydatne użycie pełnej kwalifikowanej nazwy domenowej (FQDN)ansible_fqdn
lub nazwy węzłaansible_nodename
.cluster_hostname_fact: "ansible_hostname"
Czy węzeł powinien być skonfigurowany jako zdalny węzeł pacemaker. Domyślnie jest to
false
, a węzeł będzie pełnoprawnym członkiem klastra Pacemaker. Węzły zdalne nie są pełnoprawnymi członkami klastra i pozwalają na przekroczenie maksymalnych rozmiarów klastra wynoszącego 32 pełnoprawnych członków. Należy zauważyć, że węzły zdalne są wspierane przez tę rolę tylko na EL7 i EL8.cluster_node_is_remote: false
Uporządkowana lista zmiennych do wykrywania podstawowego adresu IP klastra (ring0). Pierwsza pasująca IPv4 jest używana, a pozostałe wykryte IPv4 są pomijane. W większości przypadków nie będzie to wymagało zmian, w niektórych specjalnych przypadkach takich jak gdy nie ma domyślnego GW lub trzeba użyć nie podstawowego IPv4 z tego interfejsu, można to dostosować.
ring0_ip_ordered_detection_list: - "{{ hostvars[inventory_hostname]['ansible_'+cluster_net_iface].ipv4.address|default('') }}" - "{{ ansible_default_ipv4.address|default('') }}" - "{{ ansible_all_ipv4_addresses[0]|default('') }}"
Konfiguracja właściwości klastra (Nieobowiązkowe)
cluster_property: - name: required node: optional value: optional
Konfiguracja domyślnych zasobów klastra (Nieobowiązkowe)
cluster_resource_defaults: - name: required defaults_type: optional value: optional
Konfiguracja zasobów klastra (Nieobowiązkowe)
cluster_resource: - name: required resource_class: optional resource_type: optional options: optional force_resource_update: optional ignored_meta_attributes: optional child_name: optional
Konfiguracja ograniczeń porządkowych klastra (Nieobowiązkowe)
cluster_constraint_order: - resource1: required resource1_action: optional resource2: required resource2_action: optional kind: optional symmetrical: optional
Konfiguracja ograniczeń kolokacji klastra (Nieobowiązkowe)
cluster_constraint_colocation: - resource1: required resource1_role: optional resource2: required resource2_role: optional score: optional influence: optional
Konfiguracja ograniczeń lokalizacji klastra (Nieobowiązkowe)
na podstawie węzła
cluster_constraint_location: - resource: required node_name: required score: optional
na podstawie reguły (wymaga wersji ondrejhome.pcs-modules-2 30.0.0 lub nowszej)
cluster_constraint_location: - resource: required constraint_id: required rule: required score: optional
Zagadnienia bezpieczeństwa
Proszę rozważyć zaktualizowanie domyślnej wartości dla cluster_user_pass
.
Aby chronić wrażliwe wartości w zmiennych przekazywanych do tej roli, można użyć ansible-vault
do ich szyfrowania. Rekomendowane podejście to utworzenie oddzielnego pliku z pożądanymi zmiennymi i ich wartościami, zaszyfrowanie całego pliku za pomocą ansible-vault encrypt
a następnie dołączenie tego pliku w sekcji pre_tasks:
, aby został załadowany przed wykonaniem roli. Poniższy przykład ilustruje ten cały proces.
Tworzenie pliku encrypted_vars.yaml
- Utwórz zwykły plik tekstowy
encrypted_vars.yaml
z pożądanymi wartościami sekretów
# cat encrypted_vars.yaml --- cluster_user_pass: 'cluster-user-pass' fence_vmware_login: 'vcenter-user' fence_vmware_passwd: 'vcenter-pass'
- Utwórz zwykły plik tekstowy
- Zaszyfruj plik używając
ansible-vault
# ansible-vault encrypt encrypted_vars.yaml
- Zaszyfruj plik używając
- Sprawdź nową zawartość pliku
encrypted_vars.yaml
# cat encrypted_vars.yaml $ANSIBLE_VAULT;1.1;AES256 31306461386430...
- Sprawdź nową zawartość pliku
Przykładowy playbook, który używa wartości z encrypted_vars.yaml
- hosts: cluster
pre_tasks:
- include_vars: encrypted_vars.yaml
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'test-cluster' }
Uwaga: Szyfrowanie tylko wartości zmiennej i umieszczanie jej w vars:
jest odradzane, ponieważ może prowadzić do błędów takich jak argument 1 must be str, not AnsibleVaultEncryptedUnicode
. Podejście polegające na zaszyfrowaniu całego pliku wydaje się nie być dotknięte tym problemem.
Domyślne ustawienia modułu Ansible
Choć ta rola nie udostępnia wszystkich opcji konfiguracyjnych przez zmienne, można używać module_defaults
aby zmienić domyślne wartości parametrów, które ta rola nie używa. Poniżej znajduje się niepełna lista przykładów, gdzie może to być przydatne.
Przykład module_default A dla ustawienia tokena totemowego na 15 sekund
- hosts: cluster
modules_defaults:
pcs_cluster:
token: 15000 # domyślnie 'null' - zależne od domyślnej wartości systemu operacyjnego
Przykład module_default B dla wyłączenia instalacji słabych zależności w systemach EL8+/Fedora
- hosts: cluster
modules_defaults:
yum:
install_weak_deps: false # domyślnie jest 'true'
Przykład module_default C dla wyłączenia instalacji rekomendacji pakietów w systemach Debian
- hosts: cluster
modules_defaults:
apt:
install_recommends: false # domyślnie 'null' - zależy od konfiguracji systemu
Uwaga: module_defaults
działa tylko dla opcji, które nie są określone w zadaniu - nie można nadpisać wartości ustawionej przez zadanie w tej roli, można tylko zmienić wartość opcji, które nie są używane.
Przykładowy Playbook
Przykładowy playbook A do utworzenia klastra o nazwie 'test-cluster' włączonego przy starcie, z ustawieniami fence_xvm
i zapory. UWAGA: cluster_name
jest opcjonalne, a domyślnie to pacemaker
.
- hosts: cluster
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'test-cluster' }
Przykładowy playbook B do utworzenia klastra o nazwie 'test-cluster' bez konfigurowania zapory i bez fence_xvm
.
Aby klaster został prawidłowo autoryzowany, oczekuje się, że zapora jest już skonfigurowana lub wyłączona.
- hosts: cluster
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'test-cluster', cluster_firewall: false, cluster_configure_fence_xvm: false }
Przykładowy playbook C do utworzenia klastra o nazwie vmware-cluster
z urządzeniem stonith fence_vmware_soap
.
- hosts: cluster
vars:
fence_vmware_ipaddr: 'vcenter-hostname-or-ip'
fence_vmware_login: 'vcenter-username'
fence_vmware_passwd: 'vcenter-password-for-username'
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'vmware-cluster', cluster_configure_fence_xvm: false, cluster_configure_fence_vmware_soap: true }
Przykładowy playbook D do utworzenia klastra o nazwie test-cluster
, gdzie /etc/hosts
nie jest modyfikowane:
- hosts: cluster
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'test-cluster', cluster_etc_hosts: false }
Przykładowy playbook E do utworzenia klastra o nazwie vmware-cluster
z pojedynczym urządzeniem fence_vmware_rest
dla wszystkich węzłów klastra.
- hosts: cluster
vars:
fence_vmware_ipaddr: 'vcenter-hostname-or-ip'
fence_vmware_login: 'vcenter-username'
fence_vmware_passwd: 'vcenter-password-for-username'
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'vmware-cluster', cluster_configure_fence_xvm: false, cluster_configure_fence_vmware_rest: true, cluster_configure_stonith_style: 'one-device-per-cluster' }
Przykładowy playbook do konfiguracji zasobów.
- hosts: cluster
vars:
cluster_property:
- name: 'maintenance-mode'
value: 'true'
cluster_resource:
- name: 'apache2'
resource_type: 'systemd:apache2'
options: 'meta migration-threshold=2 op monitor interval=20s timeout=10s'
- name: 'cluster_vip'
resource_type: 'ocf:heartbeat:IPaddr2'
options: 'ip=192.168.1.150 cidr_netmask=24 meta migration-threshold=2 op monitor interval=20'
cluster_constraint_colocation:
- resource1: 'cluster_vip'
resource2: 'apache2'
score: 'INFINITY'
cluster_resource_defaults:
- name: 'failure-timeout'
value: '30'
roles:
- { role: 'ondrejhome.ha-cluster-pacemaker', cluster_name: 'apache-cluster'}
Przykład pliku inwentaryzacyjnego dla systemów CentOS/RHEL/Fedora tworzących podstawowe klastry.
[cluster-centos7]
192.168.22.21 vm_name=fastvm-centos-7.8-21
192.168.22.22 vm_name=fastvm-centos-7.8-22
[cluster-fedora32]
192.168.22.23 vm_name=fastvm-fedora32-23
192.168.22.24 vm_name=fastvm-fedora32-24
[cluster-rhel8]
192.168.22.25 vm_name=fastvm-rhel-8.0-25
192.168.22.26 vm_name=fastvm-rhel-8.0-26
Przykład pliku inwentaryzacyjnego dla klastra używającego połączeń RRP na niestandardowym interfejsie i/lub używającego niestandardowego IP dla RRP
[cluster-centos7-rrp]
192.168.22.27 vm_name=fastvm-centos-7.6-21 rrp_interface=ens6
192.168.22.28 vm_name=fastvm-centos-7.6-22 rrp_ip=192.168.22.29
Przykład pliku inwentaryzacyjnego z dwoma pełnoprawnymi członkami i dwoma węzłami zdalnymi:
[cluster]
192.168.22.21 vm_name=fastvm-centos-7.6-21
192.168.22.22 vm_name=fastvm-centos-7.6-22
192.168.22.23 vm_name=fastvm-centos-7.6-23 cluster_node_is_remote=True
192.168.22.24 vm_name=fastvm-centos-7.6-24 cluster_node_is_remote=True
Przykład pliku inwentaryzacyjnego z fence_aws:
[cluster]
172.31.0.1 instance_id="i-acbdefg1234567890"
172.31.0.2 instance_id="i-acbdefg0987654321"
Stare filmy przedstawiające uruchamianie roli z domyślnymi ustawieniami dla:
- CentOS 7.6 instalujący klaster dwóch węzłów CentOS 7.6: https://asciinema.org/a/226466
- Fedora 29 instalujący klaster dwóch węzłów Fedora 29: https://asciinema.org/a/226467
Licencja
GPLv3
Informacje o autorze
Aby skontaktować się z autorem, możesz użyć e-maila ondrej-xa2iel8u@famera.cz lub utworzyć problem na githubie, gdy potrzebujesz jakiejś funkcji.
pacemaker basic cluster role with fencing configuration (xvm, kdump, custom)
ansible-galaxy install OndrejHome.ha-cluster-pacemaker