honzamach.postgresql

**Rola postgresql

  • Strona Ansible Galaxy <https://galaxy.ansible.com/honzamach/postgresql>__
  • Repozytorium GitHub <https://github.com/honzamach/ansible-role-postgresql>__
  • Strona Travis CI <https://travis-ci.org/honzamach/ansible-role-postgresql>__

Rola Ansible do wygodnej instalacji bazy danych PostgreSQL <https://www.postgresql.org/>__.

Ta rola ma na celu uproszczenie procesu i wykonuje jedynie podstawową instalację oraz konfigurację usługi PostgreSQL. Wszelkie zaawansowane zmiany konfiguracyjne muszą być wykonane ręcznie. Rola ta instaluje najnowszą wersję 12 i opcjonalnie usuwa poprzednie wersje 10.x i 11.x. Sama migracja jest jednak skomplikowanym procesem i musi być przeprowadzona ręcznie.

Spis treści:

  • :ref:sekcja-instalacja-roli-postgresql
  • :ref:sekcja-zależności-roli-postgresql
  • :ref:sekcja-użycie-roli-postgresql
  • :ref:sekcja-zmienne-roli-postgresql
  • :ref:sekcja-pliki-roli-postgresql
  • :ref:sekcja-autora-roli-postgresql

Ta rola jest częścią pakietu MSMS <https://github.com/honzamach/msms>__. Niektóre wspólne funkcje są udokumentowane w jego :ref:instrukcji <sekcja-manual>.

Instalacja

Aby zainstalować rolę honzamach.postgresql <https://galaxy.ansible.com/honzamach/postgresql>__ z Ansible Galaxy <https://galaxy.ansible.com/>__, użyj poniższego polecenia:

ansible-galaxy install honzamach.postgresql

Aby zainstalować rolę bezpośrednio z GitHub <https://github.com>__ poprzez klonowanie repozytorium ansible-role-postgresql <https://github.com/honzamach/ansible-role-postgresql>__, użyj poniższego polecenia:

git clone https://github.com/honzamach/ansible-role-postgresql.git honzamach.postgresql

Aktualnie, korzystanie z klonowania Git ma tę zaletę, że można łatwo zaktualizować rolę kiedy pojawi się nowa wersja.

Zależności

Ta rola nie zależy od żadnej innej roli.

Następujące role mają bezpośrednią zależność od tej roli:

  • :ref:griffin <sekcja-roli-griffin>
  • :ref:mentat <sekcja-roli-mentat>
  • :ref:mentat_dev <sekcja-roli-mentat-dev>

Użycie

Przykładowa zawartość pliku inwentarza inventory::

[servers_postgresql]
twoj-serwer

Przykładowa zawartość pliku playbooka roli role_playbook.yml::

- hosts: servers_postgresql
  remote_user: root
  roles:
    - role: honzamach.postgresql
  tags:
    - role-postgresql

Przykład użycia::

# Uruchom wszystko:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml

# Aktualizacja pamięci podręcznej przed instalacją pakietów:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml --extra-vars '{"hm_pgsql__apt_force_update":"yes"}'

Zaleca się przestrzeganie poniższych zasad konfiguracyjnych:

  • Utwórz/edytuj plik inventory/group_vars/all/vars.yml i zdefiniuj w nim sensowne wartości domyślne dla wszystkich zarządzanych serwerów. Przykład::

      hm_pgsql__monitoring_password: "{{ vault_hm_pgsql__monitoring_password }}"
    
  • Utwórz/edytuj zapisaną w szyfrowanym pliku :ref:vault <sekcja-overview-vault> inventory/group_vars/all/vault.yml i przechowuj w nim hasło do szyfrowania kopii zapasowej::

      vault_hm_pgsql__monitoring_password: coś-bardzo-tajnego
    
  • Użyj plików inventory/host_vars/[twoj-serwer]/vars.yml do dostosowania ustawień dla poszczególnych serwerów. Zobacz sekcję :ref:sekcja-zmienne-roli-postgresql dla wszystkich dostępnych opcji.

Zmienne konfiguracyjne

Wewnętrzne zmienne roli


.. envvar:: hm_pgsql__apt_key_url

    URL wskazujący na klucz GPG do podpisywania pakietów PostgreSQL.

    * *Typ:* ``string``
    * *Domyślnie:* ``"https://www.postgresql.org/media/keys/ACCC4CF8.asc"``

.. envvar:: hm_pgsql__apt_key_id

    Identyfikator klucza podpisującego.

    * *Typ:* ``string``
    * *Domyślnie:* ``"ACCC4CF8"``

.. envvar:: hm_pgsql__apt_repository

    Lokalizacja repozytorium PostgreSQL.

    * *Typ:* ``string``
    * *Domyślnie:* ``"deb http://apt.postgresql.org/pub/repos/apt/[ansible_lsb['codename']]-pgdg main"``

.. envvar:: hm_pgsql__major_version

    Główna wersja, którą chcesz, aby ta rola zainstalowała na docelowym hoście.

    * *Typ:* ``string``
    * *Domyślnie:* ``"12"``

.. envvar:: hm_pgsql__remove_packages

    Lista pakietów zdefiniowanych osobno dla każdej dystrybucji linux i menedżera pakietów,
    które NIE MOGĄ być obecne na docelowym systemie. Każdy pakiet na tej liście zostanie usunięty
    z docelowego hosta. Ta rola obecnie rozpoznaje tylko ``apt`` dla ``debian``.

    * *Typ danych:* ``dict``
    * *Domyślnie:* (zobacz plik YAML ``defaults/main.yml``)
    * *Przykład:*

    .. code-block:: yaml

        hm_logged__remove_packages:
          debian:
            apt:
              - syslog-ng
              - ...

.. envvar:: hm_pgsql__remove_previous

    Usuń wcześniejszą wersję bazy danych PostgreSQL (prawda/fałsz).

    * *Typ:* ``bool``
    * *Domyślnie:* ``false``

.. envvar:: hm_pgsql__install_packages

    Lista pakietów zdefiniowanych osobno dla każdej dystrybucji linux i menedżera pakietów,
    które MUSZĄ być obecne na docelowym systemie. Każdy pakiet na tej liście zostanie zainstalowany na
    docelowym hoście. Ta rola obecnie rozpoznaje tylko ``apt`` dla ``debian``.

    * *Typ danych:* ``dict``
    * *Domyślnie:* (zobacz plik YAML ``defaults/main.yml``)
    * *Przykład:*

    .. code-block:: yaml

        hm_logged__install_packages:
          debian:
            apt:
              - syslog-ng
              - ...

.. envvar:: hm_pgsql__apt_force_update

    Wymuś aktualizację pamięci podręcznej APT przed instalacją jakichkolwiek pakietów ('tak', 'nie').

    * *Typ danych:* ``string``
    * *Domyślnie:* ``"nie"``

.. envvar:: hm_pgsql__user

    Nazwa dla użytkownika systemu UNIX dla bazy danych PostgreSQL.

    * *Typ:* ``string``
    * *Domyślnie:* ``"postgres"``

.. envvar:: hm_pgsql__group

    Nazwa dla grupy systemu UNIX dla bazy danych PostgreSQL.

    * *Typ:* ``string``
    * *Domyślnie:* ``"postgres"``

.. envvar:: hm_pgsql__monitoring_user

    Nazwa dla konta użytkownika z ograniczonym dostępem do monitorowania bazy danych PostgreSQL.

    * *Typ:* ``string``
    * *Domyślnie:* ``"watchdog"``

.. envvar:: hm_pgsql__monitoring_password

    Hasło dla konta użytkownika z ograniczonym dostępem do monitorowania bazy danych PostgreSQL.
    Powinieneś zaszyfrować to hasło używając vault.

    * *Typ:* ``string``
    * *Domyślnie:* ``"watchdog"``

.. envvar:: hm_pgsql__databases

    Lista wszystkich baz danych PostgreSQL, które powinny być obecne na docelowym systemie.

    * *Typ:* ``lista stringów``
    * *Domyślnie:* ``[]`` (pusta lista)

.. envvar:: hm_pgsql__logdir

    Ścieżka do katalogu logów.

    * *Typ:* ``string``
    * *Domyślnie:* ``"/var/log/postgresql"``

.. envvar:: hm_pgsql__logfile

    Ścieżka do pliku logów.

    * *Typ:* ``string``
    * *Domyślnie:* ``"{{ hm_pgsql__logdir }}/postgresql-{{ hm_pgsql__major_version }}-main.log"``

.. envvar:: hm_pgsql__logrotate

    Opcja rotacji logów (prawda/fałsz).

    * *Typ:* ``bool``
    * *Domyślnie:* ``true``

.. envvar:: hm_pgsql__logrotate_options

    Opcje rotacji logów.

    * *Typ:* ``lista stringów``
    * *Domyślnie:* (zobacz plik YAML ``defaults/main.yml``)

.. envvar:: hm_pgsql__procs_mincnt

    Minimalna liczba działających procesów PostgreSQL do monitorowania stanu.

    * *Typ:* ``int``
    * *Domyślnie:* ``1``

.. envvar:: hm_pgsql__procs_maxcnt

    Maksymalna liczba działających procesów PostgreSQL do monitorowania stanu.

    * *Typ:* ``int``
    * *Domyślnie:* ``100``

.. envvar:: hm_pgsql__checks

    Konfiguracje dla różnych poziomów ostrzegawczych i krytycznych dla Nagios.

    * *Typ:* ``dict``
    * *Domyślnie:* (zobacz plik YAML ``defaults/main.yml``)
    * *Przykład:*

    .. code-block:: yaml

        hm_pgsql__checks:
          check_postgres_query_time:
            w: 5 minut
            c: 10 minut
          ...

**Zmienne zewnętrzne**
--------------------------------------------------------------------------------

Ta rola używa następujących zmiennych zdefiniowanych w innych rolach:

:envvar:`hm_accounts__users`

    Możesz oznaczyć niektórych użytkowników jako administratorów tej bazy danych PostgreSQL, a
    konta superużytkowników będą tworzone dla nich w bazie danych z skonfigurowanym dostępem
    na poziomie ``peer``. Użyj flagi ``is_admin_postgresql: true`` jako właściwości konta.

    * *Przykład:*

    .. code-block:: yaml

        hm_accounts__users:ytownik:
            is_admin_postgresql: true
          ...

:envvar:`hm_monitored__service_name`

    Nazwa usługi NRPE, jeśli serwer znajduje się w grupie **servers_monitored**
    i playbook automatycznie konfiguruje monitorowanie systemu Mentat.

**Wbudowane zmienne Ansible**

:envvar:group_names

Lista nazw grup, których członkiem jest obecny host. Ta zmienna jest używana do rozwiązania
:ref:`miękkich zależności roli <section-overview-role-soft-dependencies>`.

:envvar:ansible_lsb['codename']

Kodowa nazwa dystrybucji Linux. Używana do generowania poprawnego adresu URL repozytorium APT
oraz do :ref:`dostosowań szablonów <section-overview-role-customize-templates>`.

Członkostwo w grupach

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

  • servers_monitored

    Jeśli docelowy serwer jest członkiem tej grupy, automatycznie konfigurowane jest monitorowanie Nagios dla bazy danych PostgreSQL.

  • servers_commonenv

    Jeśli docelowy serwer jest członkiem tej grupy, automatycznie konfigurowany jest skrypt do monitorowania stanu systemu dla bazy danych PostgreSQL.

Zarządzane pliki

.. note::

Ta rola wspiera opcję :ref:`dostosowywania szablonów <section-overview-role-customize-templates>`.

Ta rola zarządza zawartością następujących plików na docelowym systemie:

  • /etc/logrotate.d/postgresql-common [SZABLON]
  • /etc/nagios/nrpe.d/postgresql.cfg [SZABLON]
  • /opt/system-status/system-status.d/20-postgresql [SZABLON]

Autor i licencja

| Copyright: (C) od 2019 roku Honza Mach honza.mach.ml@gmail.com | Autor: Honza Mach honza.mach.ml@gmail.com | Użycie tej roli regulowane jest licencją MIT, szczegóły w pliku LICENSE. |

O projekcie

Ansible role for convenient installation of the PostgreSQL database.

Zainstaluj
ansible-galaxy install honzamach.postgresql
Licencja
mit
Pobrania
143
Właściciel