enix.postgresql_replication
enix.postgresql_replication
Eine Rolle zum Bereitstellen und Konfigurieren eines PostgreSQL Replikationsclusters auf Unix-Host-Systemen mit Ansible.
Anforderungen
Unterstützte Zielsysteme:
- Debian 8 "Jessie"
- Debian 9 "Stretch"
Rollenvariablen
Diese Rolle kommt mit fast allen verfügbaren Standardeinstellungen. Du kannst jede einzelne in deinen Host-/Gruppenvariablen, in deinem Inventar oder in deinem Play überschreiben. Siehe die kommentierten Standardwerte in defaults/main.yml
für Hilfe zur Konfiguration. Alle bereitgestellten Variablen beginnen mit postgresql_replication__
.
Diese Rolle funktioniert etwas anders als mehrere andere, indem wir Ansible-Gruppen verwenden, um die verschiedenen Cluster-Hosts unabhängig zu machen. Es gibt 3 verschiedene Gruppen, die du in deinem Inventar definieren musst. Damit dies mit verschiedenen Clustern im gleichen Inventar verwendbar ist, sind sie konfigurierbar.
postgresql_replication__group
- die Hauptgruppe der Hosts für diesen Cluster, Standard:postgresql
postgresql_replication__group_master
- die Mastergruppe, die nur ein Host enthalten darf, Standard:postgresql_master
postgresql_replication__group_replicas
- die Gruppe mit den Replica-Hosts, Standard:postgresql_replicas
Dein Inventar muss letztendlich diese Form haben (Beispiel im YAML-Format):
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
- der Benutzername zur Authentifizierung der Replikationsknoten. Standard:replicate
.postgresql_replication__password
- das Passwort für den Benutzerpostgresql_replication__user
. Es ist wichtig, den Standardwert in Produktionsumgebungen zu ändern. Standard:replicate
.postgresql_replication__waldir
- Verzeichnis, das zum Speichern der WAL-Datei verwendet wird, die vom Master-Knoten an die Replikationsknoten gesendet wird.
Konfiguration der sendenden Server. Siehe (https://www.postgresql.org/docs/11/runtime-config-replication.html#RUNTIME-CONFIG-REPLICATION-SENDER) für Details zu den richtigen Werten für deine Einrichtung.
postgresql_replication__walsenders
- Anzahl der aktivierten WAL-Sender-Prozesse. Standard:3
.postgresql_replication__walsegments
- Anzahl der zu behaltenden WAL-Segmente (jeweils 16 MB). Standard:64
.postgresql_replication__trigger_file
- Datei, die verwendet wird, um die Master-Operation auf einem Slave-Knoten auszulösen. Standard:/tmp/MasterNow
postgresql_replication__bootstrap
- Sehr wichtig. Wenn diese Variable auf"yesiwant"
gesetzt ist, werden alle Daten auf den inpostgresql_replication__group_replicas
definierten Hosts gelöscht und es wird ein frischespg_basebackup
vom Master erstellt. Achte darauf, dass du, wenn du dies aktivierst und die Hosts in den Gruppen nicht richtig einrichtest, deine Daten vollständig löschen kannst.
Abhängigkeiten
Verwendung
Verwende Ansible Galaxy requirements.yml:
- src: enix.postgresql_replication
Und füge es zu den Rollen deines Plays hinzu:
- 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"}
Du kannst die Rolle auch als Playbook verwenden. Du wirst gefragt, welche Hosts bereitgestellt werden sollen, und du kannst das Play weiter konfigurieren, indem du --extra-vars
verwendest.
$ ansible-playbook -i inventory --extra-vars='{...}' main.yml
Noch zu erledigen
- Echtzeit-GitLab/Travis CI hinzufügen
- Tests mit Molecule hinzufügen
Änderungsprotokoll
1.1.0
Gruppennamen auf postgresql_master und postgresql_replicas aktualisiert. Entspricht den Anforderungen an Gruppennamen in Ansible 2.8+.
1.0.0
Erste Version.
Lizenz
GPLv2
Autoreninformationen
Laurent CORBES laurent.corbes@enix.fr - http://www.enix.io
Ansible role to deploy postgresql software with replication
ansible-galaxy install enix.postgresql_replication