galaxyproject.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.confpostgresql_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 на удаленной стороне. Это позволяет использовать модули Ansiblepostgresql_*(возможно, через [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
Информация об авторе
Install and manage a PostgreSQL (http://www.postgresql.org/) server.
ansible-galaxy install galaxyproject.postgresql