postgresql

PostgreSQL

Роль [Ansible][ansible] для установки и управления серверами [PostgreSQL][postgresql]. Эта роль работает как на системах на базе Debian, так и на RedHat, и предоставляет скрипты резервного копирования для [Непрерывного архивирования и Восстановления на момент времени PostgreSQL][postgresql_pitr]. Она не создает и не управляет пользователями PostgreSQL, ролями, группами, базами данных и так далее. Для этого см. [galaxyproject.postgresql_objects][postgresql_objects].

На платформах на базе RedHat будут установлены пакеты [Глобальной группы разработки PostgreSQL (PGDG)][pgdg_yum]. На платформах на базе Debian вы можете выбрать между пакетами дистрибутива (из APT) или [пакетами PGDG][pgdg_apt].

Изменения, требующие перезагрузки, не будут применены, если вы вручную не перезагрузите PostgreSQL. Эта роль перезагрузит сервер для тех конфигурационных изменений, которые могут быть обновлены только с помощью перезагрузки, так как перезагрузка является ненавязчивой операцией, но параметры, требующие полной перезагрузки, не вызовут перезагрузку сервера.

Требования

Эта роль требует Ansible версии 2.4 и выше.

Переменные роли

Все переменные необязательны

  • postgresql_user_name: Имя пользователя системы, которое будет использоваться для PostgreSQL (по умолчанию: postgres).

  • postgresql_version: Версия PostgreSQL для установки. На платформах на базе Debian по умолчанию используется версия, на которую указывает метапакет postgresql. На платформах на базе RedHat по умолчанию используется 10.

  • postgresql_flavor: На платформах на базе Debian это указывает, хотите ли вы использовать пакеты PostgreSQL из pgdg или из репозиториев apt. Возможные значения: apt, pgdg (по умолчанию: apt).

  • postgresql_conf: Список хешей (словарей) параметров postgresql.conf (ключей) и значений. Эти параметры не добавляются напрямую в postgresql.conf - роль добавляет подкаталог conf.d в каталог конфигурации и инструкцию include для этого каталога в postgresql.conf. Параметры, установленные в postgresql_conf, затем устанавливаются в conf.d/25ansible_postgresql.conf. В целях совместимости это также может быть один хеш, но синтаксис списка предпочтителен, так как он сохраняет порядок.

    Из-за парсинга YAML следует быть внимательным при определении значений в postgresql_conf, чтобы они правильно записывались в конфигурационный файл. Например:

    postgresql_conf:
      - max_connections: 250
      - archive_mode: "off"
      - work_mem: "'8MB'"
    

    Станет следующим в 25ansible_postgresql.conf:

    max_connections = 250
    archive_mode = off
    work_mem: '8MB'
    
  • postgresql_pg_hba_conf: Список строк для добавления в pg_hba.conf

  • postgresql_pg_hba_local_postgres_user: Если установлено в false, это удалит запись пользователя postgres из pg_hba.conf, которая предварительно сконфигурирована на установках PostgreSQL на базе Debian. Вы, вероятно, не хотите этого делать, если не понимаете, что делаете.

  • postgresql_pg_hba_local_socket: Если установлено в false, это удалит запись local из pg_hba.conf, которая предварительно сконфигурирована пакетом PostgreSQL.

  • postgresql_pg_hba_local_ipv4: Если установлено в false, это удалит запись host ... 127.0.0.1/32 из pg_hba.conf, которая предварительно сконфигурирована пакетом PostgreSQL.

  • postgresql_pg_hba_local_ipv6: Если установлено в false, это удалит запись host ... ::1/128 из pg_hba.conf, которая предварительно сконфигурирована пакетом PostgreSQL.

  • postgresql_pgdata: Установите это только если вы изменили каталог $PGDATA из значения по умолчанию пакета. Обратите внимание, что это не настраивает PostgreSQL на использование другого каталога, вам нужно будет сделать это самостоятельно, это просто позволяет роли правильно найти каталог.

  • postgresql_conf_dir: То же самое, что и postgresql_pgdata, только для каталога конфигурации.

  • postgresql_install_psycopg2: Попробовать установить правильный пакет, предоставляющий psycopg2 интерпретатору Python, который используется Ansible на удаленной стороне. Это позволяет использовать модули Ansible postgresql_* (возможно, через [galaxyproject.postgresql_objects][postgresql_objects]), которые зависят от psycopg2. Значение по умолчанию true.

Резервные копии

Эта роль может развернуть и запланировать конфигурацию и скрипты для поддержания резервных копий PostgreSQL [PITR][postgresql_pitr].

Полные резервные копии будут создаваться с заданным интервалом, в то время как сегменты журнала записи (WAL) между полными резервными копиями будут архивироваться в {{ postgresql_backup_dir }}/wal_archive/, когда это будет указано сервером PostgreSQL. Сегменты WAL можно удалять из этого каталога, как только самая старая резервная копия, ссылающаяся на них, была удалена. Это выполняется автоматически вами с помощью скрипта резервного копирования, если postgresql_backup_dir смонтирован локально.

Когда postgresql_backup_dir является удаленным путем rsync (содержащим ":"), скрипт резервного копирования все равно будет поддерживать резервные копии (включая удаление старых полных резервных копий), но не сможет автоматически очищать каталог wal_archive/. Если вы можете установить стандартную утилиту pg_archivecleanup из клиентского пакета PostgreSQL на вашем сервере резервного копирования, вы можете запустить скрипт резервного копирования с этого ролика с опцией --clean-archive прямо на сервере резервного копирования.

  • postgresql_backup_dir: Если установлено, включает резервные копии PITR. Установите это значение в каталог, где будут храниться резервные копии вашей базы данных (это может быть любой формат, поддерживаемый rsync, например, user@host:/path). Самая последняя резервная копия будет находиться в подпапке с именем current.

  • postgresql_backup_local_dir: Путь к файловой системе на сервере PostgreSQL, где будут размещены скрипты резервного копирования.

  • postgresql_backup_[hour|minute]: Управляет тем, в какое время cron-задание будет выполняться для создания полной резервной копии. По умолчанию 1:00 AM.

  • postgresql_backup_[day|month|weekday]: Дополнительные настройки cron для времени выполнения полной резервной копии (по умолчанию: *).

  • postgresql_backup_post_command: Произвольная команда для выполнения после успешного завершения запланированной резервной копии.

Дополнительные параметры, касающиеся резервных копий, можно найти в файле по умолчанию.

Зависимости

Функция резервного копирования требует Python 2.7 или 3.5 и выше, psycopg2 и rsync. Обратите внимание, что если вы устанавливаете версии PGDG PostgreSQL на Enterprise Linux, соответствующие пакеты psycopg2 доступны из репозиториев yum PGDG.

Пример Playbook

Стандартная установка: Значения по умолчанию для postgresql.conf, pg_hba.conf и версия по умолчанию для ОС:

---

- hosts: dbservers
  roles:
    - galaxyproject.postgresql

Используйте пакеты pgdg на хосте на базе Debian:

---

- hosts: dbservers
  vars:
    postgresql_flavor: pgdg
  roles:
    - galaxyproject.postgresql

Используйте пакеты PostgreSQL 9.5 и установите некоторые параметры postgresql.conf и записи pg_hba.conf:

---

- hosts: dbservers
  vars:
    postgresql_version: 9.5
    postgresql_conf:
      - listen_addresses: "''"    # отключить прослушивание по сети (слушать только на unix-сокете)
      - max_connections: 50       # уменьшить лимит подключений
    postgresql_pg_hba_conf:
      - host all all 10.0.0.0/8 md5
  roles:
    - galaxyproject.postgresql

Включите резервное копирование в /archive:

- hosts: all
  vars:
    postgresql_backup_dir: /archive
  roles:
    - galaxyproject.postgresql

Включите резервное копирование в /archive на удаленном сервере:

- hosts: dbservers
  vars:
    postgresql_backup_dir: backup.example.org:/archive
  roles:
    - galaxyproject.postgresql

- hosts: backupservers
  tasks:
    - name: Установить скрипты PostgreSQL
      ansible.builtin.apt:
        name: postgresql-common
    - name: Скопировать скрипт резервного копирования
      ansible.builtin.copy:
        src: roles/galaxyproject.postgresql/files/backup.py
        dest: /usr/local/bin/pgbackup.py
        mode: "0755"
    - name: Запланировать очистку WAL
      ansible.builtin.cron:
        name: Очистка архивированных WAL PostgreSQL
        hour: 22
        minute: 0
        job: /usr/local/bin/pgbackup.py --clean-archive /archive

Лицензия

Лицензия на свободное программное обеспечение ("AFL") версия 3.0

Информация об авторе

Сообщество Galaxy и участники

О проекте

Install and manage a PostgreSQL (http://www.postgresql.org/) server.

Установить
ansible-galaxy install galaxyproject/ansible-postgresql
Лицензия
Unknown
Загрузки
69742
Владелец
Galaxy is an open, web-based platform for data-intensive research.