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:
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