postgresql
.. _section-role-postgresql:
Роль postgresql
Страница Ansible Galaxy <https://galaxy.ansible.com/honzamach/postgresql>
__Репозиторий на GitHub <https://github.com/honzamach/ansible-role-postgresql>
__Страница Travis CI <https://travis-ci.org/honzamach/ansible-role-postgresql>
__
Ansible-роль для удобной установки базы данных PostgreSQL <https://www.postgresql.org/>
__.
Эта роль предназначена для того, чтобы сделать процесс как можно проще и выполняет только базовую установку и настройку службы PostgreSQL. Все продвинутые настройки должны проводиться вручную. Эта роль устанавливает последнюю версию 12 и может по желанию удалить предыдущие версии 10.x и 11.x. Однако, фактическая миграция является довольно сложным процессом и должна выполняться вручную.
Содержание:
- :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
Эта роль является частью пакета MSMS <https://github.com/honzamach/msms>
__.
Некоторые общие функции задокументированы в его :ref:руководстве <section-manual>
.
.. _section-role-postgresql-installation:
Установка
Чтобы установить роль honzamach.postgresql <https://galaxy.ansible.com/honzamach/postgresql>
__
из Ansible Galaxy <https://galaxy.ansible.com/>
__, используйте вариацию
следующей команды::
ansible-galaxy install honzamach.postgresql
Чтобы установить роль напрямую из GitHub <https://github.com>
__ путем клонирования
репозитория ansible-role-postgresql <https://github.com/honzamach/ansible-role-postgresql>
__,
используйте вариацию следующей команды::
git clone https://github.com/honzamach/ansible-role-postgresql.git honzamach.postgresql
В настоящее время преимущество прямого клонирования Git заключается в возможности легко обновлять роль при выходе новой версии.
.. _section-role-postgresql-dependencies:
Зависимости
Эта роль не зависит от других ролей.
Следующие роли имеют прямую зависимость от этой роли:
- :ref:
griffin <section-role-griffin>
- :ref:
mentat <section-role-mentat>
- :ref:
mentat_dev <section-role-mentat-dev>
.. _section-role-postgresql-usage:
Использование
Пример содержимого файла инвентаризации inventory
::
[servers_postgresql]
ваш-сервер
Пример содержимого файла плейбука роли role_playbook.yml
::
- hosts: servers_postgresql
remote_user: root
roles:
- role: honzamach.postgresql
tags:
- role-postgresql
Пример использования::
# Запустить все:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml
# Для обновления кэша пакетов перед установкой любых пакетов:
ansible-playbook --ask-vault-pass --inventory inventory role_playbook.yml --extra-vars '{"hm_pgsql__apt_force_update":"yes"}'
Рекомендуется следовать этим принципам конфигурации:
Создайте/отредактируйте файл
inventory/group_vars/all/vars.yml
и в нем определите разумные значения по умолчанию для всех ваших управляемых серверов. Пример::hm_pgsql__monitoring_password: "{{ vault_hm_pgsql__monitoring_password }}"
Создайте/отредактируйте :ref:
vault <section-overview-vault>
зашифрованный файлinventory/group_vars/all/vault.yml
и в нем сохраните ваш пароль для резервного копирования:vault_hm_pgsql__monitoring_password: что-то-сильно-секретное-что-никто-не-угадает
Используйте файлы
inventory/host_vars/[ваш-сервер]/vars.yml
для настройки параметров для конкретных серверов. Пожалуйста, смотрите раздел :ref:section-role-postgresql-variables
для всех доступных опций.
.. _section-role-postgresql-variables:
Переменные конфигурации
Внутренние переменные роли
.. envvar:: hm_pgsql__apt_key_url
URL к GPG-ключу для подписи пакетов PostgreSQL.
* *Тип:* ``string``
* *По умолчанию:* ``"https://www.postgresql.org/media/keys/ACCC4CF8.asc"``
.. envvar:: hm_pgsql__apt_key_id
Идентификатор ключа подписи.
* *Тип:* ``string``
* *По умолчанию:* ``"ACCC4CF8"``
.. envvar:: hm_pgsql__apt_repository
Место расположения репозитория PostgreSQL.
* *Тип:* ``string``
* *По умолчанию:* ``"deb http://apt.postgresql.org/pub/repos/apt/[ansible_lsb['codename']]-pgdg main"``
.. envvar:: hm_pgsql__major_version
Основная версия, которую вы хотите установить на целевой хост.
* *Тип:* ``string``
* *По умолчанию:* ``"12"``
.. envvar:: hm_pgsql__remove_packages
Список пакетов, определенных отдельно для каждого дистрибутива Linux и пакетного менеджера,
которые НЕ ДОЛЖНЫ присутствовать на целевой системе. Любой пакет в этом списке будет удален
с целевого хоста. Эта роль на данный момент распознает только ``apt`` для ``debian``.
* *Тип данных:* ``dict``
* *По умолчанию:* (пожалуйста, смотрите YAML файл ``defaults/main.yml``)
* *Пример:*
.. код-блок:: yaml
hm_logged__remove_packages:
debian:
apt:
- syslog-ng
- ...
.. envvar:: hm_pgsql__remove_previous
Удалить предыдущую версию базы данных PostgreSQL (да/нет).
* *Тип:* ``bool``
* *По умолчанию:* ``false``
.. envvar:: hm_pgsql__install_packages
Список пакетов, определенных отдельно для каждого дистрибутива Linux и пакетного менеджера,
которые ДОЛЖНЫ присутствовать на целевой системе. Любой пакет в этом списке будет установлен на
целевом хосте. Эта роль на данный момент распознает только ``apt`` для ``debian``.
* *Тип данных:* ``dict``
* *По умолчанию:* (пожалуйста, смотрите YAML файл ``defaults/main.yml``)
* *Пример:*
.. код-блок:: yaml
hm_logged__install_packages:
debian:
apt:
- syslog-ng
- ...
.. envvar:: hm_pgsql__apt_force_update
Принудительное обновление кэша APT перед установкой любых пакетов ('да','нет').
* *Тип данных:* ``string``
* *По умолчанию:* ``"нет"``
.. envvar:: hm_pgsql__user
Имя для UNIX-системного пользователя для базы данных PostgreSQL.
* *Тип:* ``string``
* *По умолчанию:* ``"postgres"``
.. envvar:: hm_pgsql__group
Имя для UNIX-системной группы для базы данных PostgreSQL.
* *Тип:* ``string``
* *По умолчанию:* ``"postgres"``
.. envvar:: hm_pgsql__monitoring_user
Имя для ограниченной учетной записи пользователя для мониторинга базы данных PostgreSQL.
* *Тип:* ``string``
* *По умолчанию:* ``"watchdog"``
.. envvar:: hm_pgsql__monitoring_password
Пароль для ограниченной учетной записи пользователя для мониторинга базы данных PostgreSQL.
Этот пароль следует зашифровать с помощью хранилища.
* *Тип:* ``string``
* *По умолчанию:* ``"watchdog"``
.. envvar:: hm_pgsql__databases
Список всех баз данных PostgreSQL, которые должны присутствовать на целевой системе.
* *Тип:* ``список строк``
* *По умолчанию:* ``[]`` (пустой список)
.. envvar:: hm_pgsql__logdir
Путь к каталогу логов.
* *Тип:* ``string``
* *По умолчанию:* ``"/var/log/postgresql"``
.. envvar:: hm_pgsql__logfile
Путь к файлу логов.
* *Тип:* ``string``
* *По умолчанию:* ``"{{ hm_pgsql__logdir }}/postgresql-{{ hm_pgsql__major_version }}-main.log"``
.. envvar:: hm_pgsql__logrotate
Переключатель вращения логов (да/нет).
* *Тип:* ``bool``
* *По умолчанию:* ``true``
.. envvar:: hm_pgsql__logrotate_options
Опции вращения логов.
* *Тип:* ``список строк``
* *По умолчанию:* (пожалуйста, смотрите YAML файл ``defaults/main.yml``)
.. envvar:: hm_pgsql__procs_mincnt
Минимальное количество работающих процессов PostgreSQL для мониторинга состояния.
* *Тип:* ``int``
* *По умолчанию:* ``1``
.. envvar:: hm_pgsql__procs_maxcnt
Максимальное количество работающих процессов PostgreSQL для мониторинга состояния.
* *Тип:* ``int``
* *По умолчанию:* ``100``
.. envvar:: hm_pgsql__checks
Конфигурации для различных предупреждений и критических порогов проверки Nagios.
* *Тип:* ``dict``
* *По умолчанию:* (пожалуйста, смотрите YAML файл ``defaults/main.yml``)
* *Пример:*
.. код-блок:: yaml
hm_pgsql__checks:
check_postgres_query_time:
w: 5 минут
c: 10 минут
...
Внешние переменные
--------------------------------------------------------------------------------
Эта роль использует следующие внешние переменные, определенные в других ролях:
:envvar:`hm_accounts__users`
Вы можете отметить определенных пользователей как администраторов этой базы данных PostgreSQL,
и для них будут созданы суперпользовательские учетки в базе данных, а доступ
с уровнем аутентификации ``peer`` будет настроен. Используйте флажок ``is_admin_postgresql: true``
как свойство учетной записи.
* *Пример:*
.. код-блок:: yaml
hm_accounts__users:
user:
is_admin_postgresql: true
...
:envvar:`hm_monitored__service_name`
Имя службы NRPE, если сервер находится в группе **servers_monitored**
и плейбук автоматически настраивает мониторинг системы Mentat.
Встроенные переменные Ansible
:envvar:group_names
Список имен групп, членом которых является текущий хост. Эта переменная используется для разрешения
:ref:`мягких зависимостей ролей <section-overview-role-soft-dependencies>`.
:envvar:ansible_lsb['codename']
Кодовое имя дистрибутива Linux. Оно используется для создания правильного URL-адреса репозитория APT
и для :ref:`настроек шаблона <section-overview-role-customize-templates>`.
Членство в группах
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
servers_monitored
Если целевой сервер является членом этой группы, мониторинг Nagios автоматически настраивается для базы данных PostgreSQL.
servers_commonenv
Если целевой сервер является членом этой группы, скрипт статуса системы автоматически настраивается для базы данных PostgreSQL.
.. _section-role-postgresql-files:
Управляемые файлы
.. примечание::
Эта роль поддерживает функцию :ref:`настройки шаблонов <section-overview-role-customize-templates>`.
Эта роль управляет содержимым следующих файлов на целевой системе:
/etc/logrotate.d/postgresql-common
[ШАБЛОН]/etc/nagios/nrpe.d/postgresql.cfg
[ШАБЛОН]/opt/system-status/system-status.d/20-postgresql
[ШАБЛОН]
.. _section-role-postgresql-author:
Автор и лицензия
| Авторское право: (C) с 2019 года Honza Mach honza.mach.ml@gmail.com | Автор: Honza Mach honza.mach.ml@gmail.com | Использование этой роли регулируется лицензией MIT, см. файл LICENSE. |
Ansible role for convenient installation of the PostgreSQL database.
ansible-galaxy install honzamach/ansible-role-postgresql