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 Datei inventory/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. |

Über das Projekt

Ansible role for convenient installation of the PostgreSQL database.

Installieren
ansible-galaxy install honzamach.postgresql
GitHub Repository
Lizenz
mit
Downloads
143
Besitzer