mivek.postgresql
Ansible Rolle: PostgreSQL
Installiert und konfiguriert den PostgreSQL-Server auf Debian/Ubuntu-Servern.
Anforderungen
Keine speziellen Anforderungen; beachten Sie, dass diese Rolle Root-Zugriff benötigt. Führen Sie sie entweder in einem Playbook mit become: true
aus oder rufen Sie die Rolle in Ihrem Playbook so auf:
- hosts: database
become: true
roles:
- role: mivek.postgresql
Rollenvariablen
Verfügbare Variablen werden unten aufgeführt, zusammen mit den Standardwerten (siehe defaults/main.yml
):
postgresql_restarted_state: "restarted"
Setzt den Zustand des Dienstes, wenn Änderungen an der Konfiguration vorgenommen werden. Empfohlene Werte sind restarted
oder reloaded
.
postgresql_user: postgres
postgresql_group: postgres
Der Benutzer und die Gruppe, unter denen PostgreSQL läuft.
postgresql_unix_socket_directories:
- /var/run/postgresql
Die Verzeichnisse (meist eines, können aber auch mehrere sein), in denen der Socket von PostgreSQL erstellt wird.
postgresql_service_state: started
postgresql_service_enabled: true
Steuert den Zustand des PostgreSQL-Dienstes und ob er beim Booten gestartet werden soll.
postgresql_auth_method: scram-sha-256
Die zu verwendende Authentifizierungsmethode. Entweder scram-sha-256 oder md5.
postgresql_global_config_options:
- option: unix_socket_directories
value: '{{ postgresql_unix_socket_directories | join(",") }}'
- option: log_directory
value: 'log'
- option: password_encryption
value: "{{ postgresql_auth_method }}"
Globale Konfigurationsoptionen, die in postgresql.conf
eingestellt werden.
Für PostgreSQL-Versionen älter als 9.3 müssen Sie diese Variable mindestens überschreiben und die option
auf unix_socket_directory
setzen.
Wenn Sie den Wert von option: log_directory
mit einem anderen, relativen oder absoluten Pfad überschreiben, wird dieses Verzeichnis für Sie erstellt.
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: '127.0.0.1/32', auth_method: md5 }
- { type: host, database: all, user: all, address: '::1/128', auth_method: md5 }
- { type: host, database: all, user: all, addresses: ['10.0.0.1/32', '10.0.0.2/32'], auth_method: md5 }
Konfiguriert hostbasierte Authentifizierung-Einträge, die in die pg_hba.conf
gesetzt werden. Optionen für Einträge sind:
type
(erforderlich)database
(erforderlich)user
(erforderlich)addresses
Liste der Adressenaddress
(eines davon oder die folgenden zwei sind erforderlich)ip_address
ip_mask
auth_method
(erforderlich)auth_options
(optional)
Wenn Sie überschreiben, stellen Sie sicher, dass Sie alle vorhandenen Einträge aus defaults/main.yml
kopieren, falls Sie bestehende Einträge beibehalten möchten.
postgresql_locales:
- 'en_US.UTF-8'
(Nur Debian/Ubuntu) Wird verwendet, um die von PostgreSQL-Datenbanken verwendeten Locales zu generieren.
postgresql_databases:
- name: exampledb # erforderlich; der Rest ist optional
lc_collate: # standardmäßig 'en_US.UTF-8'
lc_ctype: # standardmäßig 'en_US.UTF-8'
encoding: # standardmäßig 'UTF-8'
template: # standardmäßig 'template0'
login_host: # standardmäßig 'localhost'
login_password: # standardmäßig nicht gesetzt
login_user: # standardmäßig 'postgresql_user'
login_unix_socket: # standardmäßig 1. aus postgresql_unix_socket_directories
port: # standardmäßig nicht gesetzt
owner: # standardmäßig postgresql_user
state: # standardmäßig 'present'
Eine Liste von Datenbanken, die auf dem Server vorhanden sein sollen. Nur der name
ist erforderlich; alle anderen Eigenschaften sind optional.
postgresql_users:
- name: jdoe #erforderlich; der Rest ist optional
password: # standardmäßig nicht gesetzt
encrypted: # standardmäßig nicht gesetzt
priv: # standardmäßig nicht gesetzt
role_attr_flags: # standardmäßig nicht gesetzt
db: # standardmäßig nicht gesetzt
login_host: # standardmäßig 'localhost'
login_password: # standardmäßig nicht gesetzt
login_user: # standardmäßig '{{ postgresql_user }}'
login_unix_socket: # standardmäßig 1. aus postgresql_unix_socket_directories
port: # standardmäßig nicht gesetzt
state: # standardmäßig 'present'
Eine Liste von Benutzern, die auf dem Server vorhanden sein sollen. Nur der name
ist erforderlich; alle anderen Eigenschaften sind optional.
postgresql_privs:
- database: "{{ item.database }}"
login_host: "{{ item.login_host | default('localhost') }}"
login_password: "{{ item.login_password | default(omit) }}"
login_user: "{{ item.login_user | default(postgresql_user) }}"
login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_directories[0]) }}"
objs: "{{ item.objs | default(omit) }}"
privs: "{{ item.privs | default(omit) }}"
roles: "{{ item.roles }}"
schema: "{{ item.schema | default(omit) }}"
type: "{{ item.type | default(omit) }}"
state: "{{ item.state | default('present') }}"
Eine Liste von Berechtigungen, die auf dem Server vorhanden sein sollen. Nur database
und roles
sind erforderlich.
postgresql_pgpass_users:
- hostname: localhost
port: 5432
database: db1
name: jdoe
Eine Liste von Benutzern, die zum pgpass
hinzugefügt werden sollen. Das Passwort ist nicht erforderlich und wird aus der postgresql_users
-Variable abgerufen.
postgresql_users_no_log: true
Ob Benutzerdaten (die vertrauliche Informationen wie Passwörter enthalten können) beim Verwalten von Benutzern ausgegeben werden sollen.
postgresql_privs_no_log: true
Ob Berechtigungsdaten beim Verwalten von Berechtigungen ausgegeben werden sollen.
postgresql_version: [betriebsystemabhängig]
postgresql_data_dir: [betriebsystemabhängig]
postgresql_bin_path: [betriebsystemabhängig]
postgresql_config_path: [betriebsystemabhängig]
postgresql_daemon: [betriebsystemabhängig]
postgresql_packages: [betriebsystemabhängig]
Betriebsystemabhängige Variablen, die durch Include-Dateien im Verzeichnis vars
dieser Rolle festgelegt werden. Diese sollten nicht überschrieben werden, es sei denn, Sie verwenden eine Version von PostgreSQL, die nicht mithilfe von Systempaketen installiert wurde.
Abhängigkeiten
Keine.
Beispiel Playbook
- hosts: database
become: true
roles:
- mivek.postgresql
In vars/main.yml
:
postgresql_databases:
- name: example_db
postgresql_users:
- name: example_user
password: supersecure
Lizenz
MIT / BSD
Autorinformationen
Diese Rolle wurde 2016 von Jeff Geerling erstellt, dem Autor von Ansible for DevOps.
ansible-galaxy install mivek.postgresql