honzamach.postgresql
.. _section-role-postgresql:
Rolle postgresql
Seite von Ansible Galaxy <https://galaxy.ansible.com/honzamach/postgresql>
__GitHub-Repository <https://github.com/honzamach/ansible-role-postgresql>
__Travis CI-Seite <https://travis-ci.org/honzamach/ansible-role-postgresql>
__
Ansible-Rolle für die bequeme Installation der PostgreSQL <https://www.postgresql.org/>
__
Datenbank.
Diese Rolle zielt darauf ab, die Dinge so einfach wie möglich zu halten und führt nur die grundlegende Installation und Konfiguration des PostgreSQL-Dienstes durch. Alle fortgeschrittenen Konfigurationen müssen manuell vorgenommen werden. Diese Rolle installiert die neueste Version 12 und kann optional die vorherigen Versionen 10.x und 11.x entfernen. Die tatsächliche Migration ist jedoch ein ziemlich komplexer Prozess und muss manuell durchgeführt werden.
Inhaltsverzeichnis:
- :ref:
section-role-postgresql-installation
- :ref:
section-role-postgresql-dependencies
- :ref:
section-role-postgresql-usage
- :ref:
section-role-postgresql-variables
- :ref:
section-role-postgresql-files
- :ref:
section-role-postgresql-author
Diese Rolle ist Teil des MSMS <https://github.com/honzamach/msms>
__ Pakets.
Einige häufige Funktionen sind in seinem :ref:Handbuch <section-manual>
dokumentiert.
.. _section-role-postgresql-installation:
Installation
Um die Rolle honzamach.postgresql <https://galaxy.ansible.com/honzamach/postgresql>
__
von Ansible Galaxy <https://galaxy.ansible.com/>
__ zu installieren, verwenden Sie eine
Variation des folgenden Befehls::
ansible-galaxy install honzamach.postgresql
Um die Rolle direkt von GitHub <https://github.com>
__ durch das Klonen des
ansible-role-postgresql <https://github.com/honzamach/ansible-role-postgresql>
__
Repositorys zu installieren, verwenden Sie eine Variation des folgenden Befehls::
git clone https://github.com/honzamach/ansible-role-postgresql.git honzamach.postgresql
Derzeit hat der direkte Git-Klon den Vorteil, dass die Rolle bei Veröffentlichung neuer Versionen einfach aktualisiert werden kann.
.. _section-role-postgresql-dependencies:
Abhängigkeiten
Diese Rolle ist nicht von anderen Rollen abhängig.
Folgende Rollen haben eine direkte Abhängigkeit von dieser Rolle:
- :ref:
griffin <section-role-griffin>
- :ref:
mentat <section-role-mentat>
- :ref:
mentat_dev <section-role-mentat-dev>
.. _section-role-postgresql-usage:
Verwendung
Beispielinhalt der Inventardatei inventory
::
[servers_postgresql]
dein-server
Beispielinhalt der Rolle-Playbook-Datei role_playbook.yml
::
- hosts: servers_postgresql
remote_user: root
roles:
- role: honzamach.postgresql
tags:
- role-postgresql
Beispielverwendung::
# Alles ausführen:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml
# Für Paket-Cache-Update vor der Installation von Paketen:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml --extra-vars '{"hm_pgsql__apt_force_update":"yes"}'
Es wird empfohlen, diese Konfigurationsprinzipien zu befolgen:
Erstellen/Bearbeiten der Datei
inventory/group_vars/all/vars.yml
und darin einige sinnvolle Vorgaben für all Ihre verwalteten Server definieren. Beispiel::hm_pgsql__monitoring_password: "{{ vault_hm_pgsql__monitoring_password }}"
Erstellen/Bearbeiten der :ref:
vault <section-overview-vault>
verschlüsselten Dateiinventory/group_vars/all/vault.yml
und darin Ihr Backup-Verschlüsselungspasswort speichern::vault_hm_pgsql__monitoring_password: etwas-so-geheim-dass-niemand-es-raten-wird
Verwenden Sie die Dateien
inventory/host_vars/[dein-server]/vars.yml
um Einstellungen für bestimmte Server anzupassen. Bitte siehe Abschnitt :ref:section-role-postgresql-variables
für alle verfügbaren Optionen.
.. _section-role-postgresql-variables:
Konfigurationsvariablen
Interne Rollenvariablen
.. envvar:: hm_pgsql__apt_key_url
URL, die zum GPG-Schlüssel für die Signierung von PostgreSQL-Paketen führt.
* *Typ:* ``string``
* *Standard:* ``"https://www.postgresql.org/media/keys/ACCC4CF8.asc"``
.. envvar:: hm_pgsql__apt_key_id
Kennung des Signaturschlüssels.
* *Typ:* ``string``
* *Standard:* ``"ACCC4CF8"``
.. envvar:: hm_pgsql__apt_repository
Standort des PostgreSQL-Repositorys.
* *Typ:* ``string``
* *Standard:* ``"deb http://apt.postgresql.org/pub/repos/apt/[ansible_lsb['codename']]-pgdg main"``
.. envvar:: hm_pgsql__major_version
Hauptversion, die Sie wünschen, dass diese Rolle auf dem Zielhost installiert.
* *Typ:* ``string``
* *Standard:* ``"12"``
.. envvar:: hm_pgsql__remove_packages
Liste der Pakete, die separat für jede Linux-Distribution und Paketmanager
definiert sind und NICHT auf dem Zielsystem vorhanden sein dürfen. Jedes Paket
auf dieser Liste wird vom Zielhost entfernt. Diese Rolle erkennt derzeit nur ``apt`` für ``debian``.
* *Datentyp:* ``dict``
* *Standard:* (bitte siehe YAML-Datei ``defaults/main.yml``)
* *Beispiel:*
.. code-block:: yaml
hm_logged__remove_packages:
debian:
apt:
- syslog-ng
- ...
.. envvar:: hm_pgsql__remove_previous
Vorherige Version der PostgreSQL-Datenbank entfernen (true/false).
* *Typ:* ``bool``
* *Standard:* ``false``
.. envvar:: hm_pgsql__install_packages
Liste der Pakete, die separat für jede Linux-Distribution und Paketmanager
definiert sind und auf dem Zielsystem vorhanden sein müssen. Jedes Paket
auf dieser Liste wird auf dem Zielhost installiert. Diese Rolle erkennt derzeit nur ``apt`` für ``debian``.
* *Datentyp:* ``dict``
* *Standard:* (bitte siehe YAML-Datei ``defaults/main.yml``)
* *Beispiel:*
.. code-block:: yaml
hm_logged__install_packages:
debian:
apt:
- syslog-ng
- ...
.. envvar:: hm_pgsql__apt_force_update
Erzwingen Sie das APT-Cache-Update vor der Installation von Paketen ('yes','no').
* *Datentyp:* ``string``
* *Standard:* ``"no"``
.. envvar:: hm_pgsql__user
Name für den UNIX-Systembenutzer für die PostgreSQL-Datenbank.
* *Typ:* ``string``
* *Standard:* ``"postgres"``
.. envvar:: hm_pgsql__group
Name für die UNIX-Systemgruppe für die PostgreSQL-Datenbank.
* *Typ:* ``string``
* *Standard:* ``"postgres"``
.. envvar:: hm_pgsql__monitoring_user
Name für das eingeschränkte Benutzerkonto zur Überwachung der PostgreSQL-Datenbank.
* *Typ:* ``string``
* *Standard:* ``"watchdog"``
.. envvar:: hm_pgsql__monitoring_password
Passwort für das eingeschränkte Benutzerkonto zur Überwachung der PostgreSQL-Datenbank.
Sie sollten dieses Passwort mit einem Vault verschlüsseln.
* *Typ:* ``string``
* *Standard:* ``"watchdog"``
.. envvar:: hm_pgsql__databases
Liste aller PostgreSQL-Datenbanken, die auf dem Zielsystem vorhanden sein sollten.
* *Typ:* ``Liste von Strings``
* *Standard:* ``[]`` (leere Liste)
.. envvar:: hm_pgsql__logdir
Pfad zum Protokollverzeichnis.
* *Typ:* ``string``
* *Standard:* ``"/var/log/postgresql"``
.. envvar:: hm_pgsql__logfile
Pfad zur Protokolldatei.
* *Typ:* ``string``
* *Standard:* ``"{{ hm_pgsql__logdir }}/postgresql-{{ hm_pgsql__major_version }}-main.log"``
.. envvar:: hm_pgsql__logrotate
Protokollrotation aktivieren (true/false).
* *Typ:* ``bool``
* *Standard:* ``true``
.. envvar:: hm_pgsql__logrotate_options
Optionen für die Protokollrotation.
* *Typ:* ``Liste von Strings``
* *Standard:* (bitte siehe YAML-Datei ``defaults/main.yml``)
.. envvar:: hm_pgsql__procs_mincnt
Minimale Anzahl von laufenden PostgreSQL-Prozessen für die Gesundheitsüberwachung.
* *Typ:* ``int``
* *Standard:* ``1``
.. envvar:: hm_pgsql__procs_maxcnt
Maximale Anzahl von laufenden PostgreSQL-Prozessen für die Gesundheitsüberwachung.
* *Typ:* ``int``
* *Standard:* ``100``
.. envvar:: hm_pgsql__checks
Konfigurationen für verschiedene Nagios-Überprüfungen und kritische Schwellenwerte.
* *Typ:* ``dict``
* *Standard:* (bitte siehe YAML-Datei ``defaults/main.yml``)
* *Beispiel:*
.. code-block:: yaml
hm_pgsql__checks:
check_postgres_query_time:
w: 5 Minuten
c: 10 Minuten
...
Fremdvariablen
--------------------------------------------------------------------------------
Diese Rolle verwendet folgende fremde Variablen, die in anderen Rollen definiert sind:
:envvar:`hm_accounts__users`
Sie können bestimmte Benutzer als Administratoren dieser PostgreSQL-Datenbank kennzeichnen,
und es werden Superuser-Konten für sie in der Datenbank erstellt und der
``peer``-Authentifizierungszugang konfiguriert. Verwenden Sie das Flag
``is_admin_postgresql: true`` als Eigenschaft eines Kontos.
* *Beispiel:*
.. code-block:: yaml
hm_accounts__users:
user:
is_admin_postgresql: true
...
:envvar:`hm_monitored__service_name`
Name des NRPE-Dienstes, falls der Server in der Gruppe **servers_monitored**
ist und das Playbook automatisch die Überwachung des Mentat-Systems konfiguriert.
Eingebaute Ansible-Variablen
:envvar:group_names
Liste der Gruppennamen, zu denen der aktuelle Host gehört. Diese Variable wird verwendet, um
:ref:`weiche Rollenabhängigkeiten <section-overview-role-soft-dependencies>` zu lösen.
:envvar:ansible_lsb['codename']
Codename der Linux-Distribution. Er wird verwendet, um die korrekte APT-Repository-URL
zu generieren und für :ref:`Vorlagenanpassungen <section-overview-role-customize-templates>`.
Gruppenmitgliedschaften
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
servers_monitored
Falls der Zielserver Mitglied dieser Gruppe ist, wird die Nagios-Überwachung automatisch für die PostgreSQL-Datenbank konfiguriert.
servers_commonenv
Falls der Zielserver Mitglied dieser Gruppe ist, wird das Systemstatus-Skript automatisch für die PostgreSQL-Datenbank konfiguriert.
.. _section-role-postgresql-files:
Verwaltete Dateien
.. note::
Diese Rolle unterstützt die Funktion :ref:`Vorlagenanpassung <section-overview-role-customize-templates>`.
Diese Rolle verwaltet den Inhalt der folgenden Dateien auf dem Zielsystem:
/etc/logrotate.d/postgresql-common
[VORLAGE]/etc/nagios/nrpe.d/postgresql.cfg
[VORLAGE]/opt/system-status/system-status.d/20-postgresql
[VORLAGE]
.. _section-role-postgresql-author:
Autor und Lizenz
| Urheberrecht: (C) seit 2019 Honza Mach honza.mach.ml@gmail.com | Autor: Honza Mach honza.mach.ml@gmail.com | Die Verwendung dieser Rolle unterliegt der MIT-Lizenz, siehe LICENSE-Datei. |
Ansible role for convenient installation of the PostgreSQL database.
ansible-galaxy install honzamach.postgresql