enix.postgresql_replication
enix.postgresql_replication
=================
Rola do wdrożenia i konfiguracji klastra replikacji PostgreSQL na hostach unixowych z wykorzystaniem Ansible.
Wymagania
Obsługiwane systemy:
- Debian 8 "Jessie"
- Debian 9 "Stretch"
Zmienne Roli
Ta rola zawiera niemal wszystkie dostępne domyślne ustawienia. Możesz je nadpisać w zmiennych dla hostów/grup, w swoim inwentarzu lub w swoim playbooku. Zobacz adnotowane domyślne ustawienia w defaults/main.yml, aby uzyskać pomoc w konfiguracji. Wszystkie dostarczane zmienne rozpoczynają się od postgresql_replication__.
Ta rola działa w inny sposób niż kilka innych, wprowadzając grupy Ansible, aby uczynić role różnych hostów klastra niezależnymi. Istnieją więc 3 różne grupy do zdefiniowania w swoim inwentarzu, które można konfigurować do użycia z różnymi klastrami w tym samym inwentarzu:
postgresql_replication__group- główna grupa hostów dla tego klastra, domyślnie:postgresqlpostgresql_replication__group_master- grupa master, która musiała obejmować tylko jeden host, domyślnie:postgresql_masterpostgresql_replication__group_replicas- grupa zawierająca hosty replik, domyślnie:postgresql_replicas
Twój inwentarz musi mieć ostatecznie taki format (przykład w formacie yaml):
all:
children:
postgresql:
children:
postgresql_master:
hosts:
db-01:
ansible_host: 185.145.251.12
postgresql_replicas:
hosts:
db-02:
ansible_host: 185.145.251.243
postgresql_replication__user- nazwa użytkownika do uwierzytelniania węzłów replikacji, domyślnie:replicate.postgresql_replication__password- hasło dla użytkownikapostgresql_replication__user. Ważne jest, aby zmienić domyślne hasło na klastrach produkcyjnych. domyślnie:replicate.postgresql_replication__waldir- katalog używany do przechowywania plików WAL przesyłanych z węzła master do węzłów replikacji.
Konfiguracja serwerów wysyłających. Zobacz (https://www.postgresql.org/docs/11/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-SENDER) dla szczegółów dotyczących odpowiednich wartości dla twojej konfiguracji:
postgresql_replication__walsenders- liczba procesów wysyłania WAL do włączenia, domyślnie:3.postgresql_replication__walsegments- liczba segmentów WAL do zachowania (po 16 MB każdy), domyślnie:64.postgresql_replication__trigger_file- plik używany do uruchamiania operacji master na węźle podrzędnym, domyślnie:/tmp/MasterNowpostgresql_replication__bootstrap- Bardzo ważne. Kiedy ta zmienna jest ustawiona na"yesiwant", wdrożenie usunie wszystkie dane na hostach określonych wpostgresql_replication__group_replicasi przeprowadzi świeżąpg_basebackupz mastera. Zachowaj ostrożność, ponieważ jeśli włączysz to i nie skonfigurujesz odpowiednio hostów w grupach, możesz całkowicie zniszczyć swoje dane.
Zależności
Użycie
Użyj pliku requirements.yml w Ansible galaxy:
- src: enix.postgresql_replication
A następnie dodaj to do ról w swoim playbooku:
- hosts: postgresql
roles:
- role enix.postgresql_replication:
postgresql__version: 11
postgresql__global_config_options:
- option: listen_addresses
value: '*'
- option: log_min_duration_statement
value: 1000
postgresql__hba_entries:
- {type: local, database: all, user: postgres, auth_method: peer}
- {type: local, database: all, user: all, auth_method: peer}
- {type: host, database: all, user: all, address: "0.0.0.0/0", auth_method: md5}
- {type: hostssl, database: replication, user: "{{ postgresql_replication__user }}", address: "0.0.0.0/0", auth_method: md5}
postgresql__users:
- {name: "{{ postgresql_replication__user }}", password: "{{ postgresql_replication__password }}", role_attr_flags: "REPLICATION"}
Możesz również użyć roli jako playbooka. Zostaniesz poproszony o wybór hostów do zarządzania i możesz dodatkowo skonfigurować grę, używając --extra-vars.
$ ansible-playbook -i inventory --extra-vars='{...}' main.yml
Do zrobienia
- Dodać integrację z GitLab / Travis CI
- Dodać testy korzystając z Molecule
Historia Zmian
1.1.0
Zaktualizowano nazwy grup na postgresql_master i postgresql_replicas. Zgodność z wymaganiami grup w Ansible 2.8+.
1.0.0
Wersja początkowa.
Licencja
GPLv2
Informacje o Autorze
Laurent CORBES laurent.corbes@enix.fr - http://www.enix.io
Ansible role to deploy postgresql software with replication
ansible-galaxy install enix.postgresql_replication