mivek.postgresql

Ansible Rolle: PostgreSQL

CI

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 Adressen
  • address (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.

Über das Projekt

PostgreSQL server for Linux.

Installieren
ansible-galaxy install mivek.postgresql
GitHub Repository
Lizenz
mit
Downloads
331