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
Лицензия
mit
Загрузки
129
Владелец