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.ymli 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.ymli 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.ymldo dostosowania ustawień dla poszczególnych serwerów. Zobacz sekcję :ref:- sekcja-zmienne-roli-postgresqldla 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:
          uż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. |
Ansible role for convenient installation of the PostgreSQL database.
ansible-galaxy install honzamach.postgresql