postgresql
enix.postgresql
Роль для развертывания и настройки postgresql на unix-хостах с использованием Ansible.
Требования
Поддерживаемые платформы:
- Debian 9 "Stretch"
- Debian 10 "Buster"
- Debian 11 "Bullseye"
- Ubuntu 20.04 "Focal"
- Ubuntu 22.04 "Jammy"
Переменные роли
Эта роль уже содержит почти все необходимые настройки по умолчанию. Вы можете переопределить каждую из них в переменных ваших хостов/групп, в инвентаре или в вашем play. Смотрите аннотированные настройки в defaults/main.yml
для помощи в конфигурации.
postgresql__version
- версия postgresql для установки. По умолчанию 14. Доступные версии: 10, 11, 12, 13, 14.postgresql__extensions
- пакеты расширений postgresql для установки.postgresql__global_config_options
- глобальные параметры конфигурации, которые нужно установить в postgresql.conf. Общие параметры:
postgresql__global_config_options:
- option: listen_addresses
value: '*'
- option: log_min_duration_statement
value: 1000
- option: bonjour
value: off
state: absent
postgresql__includeconf
- список конфигурационных файлов для шаблонизации и загрузки в conf.d/.postgresql__hba_entries
- записи для аутентификации на основе хоста. Переопределят стандартные настройки PostgreSQL. По умолчанию не определено. Обязательные поля:type, database, user, auth_method
, необязательные:address, ip_address, ip_mask, auth_options
. Для воспроизведения предоставленной конфигурации пакета:
postgresql_hba_entries:
- {type: local, database: all, user: postgres, auth_method: peer}
- {type: local, database: all, user: all, auth_method: peer}
- {type: host, database: all, user: all, address: '127.0.0.1/32', auth_method: md5}
- {type: host, database: all, user: all, address: '::1/128', auth_method: md5}
# начиная с версии 10 добавлена роль репликации
- {type: local, database: replication, user: all, auth_method: peer}
- {type: host, database: replication, user: all, address: '127.0.0.1/32', auth_method: md5}
- {type: host, database: replication, user: all, address: '::1/128', auth_method: md5}
postgresql__users
- Пользователи, которые будут созданы на сервере postgresql и их учетные данные:
postgresql__users:
- {name: "foobar",
password: "supersecure",
encrypted: yes,
expires: 'infinity',
state: 'present',
conn_limit: none,
priv: none,
role_attr_flags: none,
db: none
postgresql__databases
- состояние баз данных, которые нужно установить на сервер. Единственный обязательный параметр — имя:
postgresql__databases:
- {name: test,
lc_collate: 'en_US.UTF-8',
lc_ctype: 'en_US.UTF-8',
encoding: 'UTF-8',
template: 'template0',
owner: postgres,
extension: [], # проверьте, что необходимые расширения установлены заранее
state: 'present'
}
postgresql__install_pgbackrest
- установка программного обеспечения pgbackrest https://pgbackrest.org.postgresql__install_pg_auto_failover
- установка программного обеспечения pg_auto_failover https://github.com/citusdata/pg_auto_failover.postgresql__disable_initdb
- отключение создания основного кластера по умолчанию. Полезно при создании кластера pg_auto_failover или просто при установке пакета.
Зависимости
- Нет
Использование
Используйте Ansible galaxy requirements.yml
- src: enix.postgresql
И добавьте это в роли вашего play:
- hosts: all
roles:
- role enix.postgresql:
postgresql__var: true
Вы также можете использовать роль как playbook. Вам будет предложено выбрать, какие хостыProvision, и вы можете дополнительно настроить play, используя --extra-vars
.
ansible-playbook -i inventory --extra-vars='{...}' main.yml
Что еще нужно сделать
- Проверить, развертываем ли мы на реплике. В этом случае не выполнять createdb и createuser.
- Добавить CI тесты с использованием molecule.
История изменений
2.1.0
Добавлено: установка программного обеспечения pgbackrest и pg_auto_failover. Добавлена опция disable_initdb. Это предотвращает установку базы данных по умолчанию.
2.0.0
Добавлена поддержка postgresql 13 и 14. Добавлена поддержка Debian 10 Buster и Debian 11 Bullseye. Добавлена поддержка Ubuntu 20.04 Focal и Ubuntu 22.04 Jammy. Удалена поддержка debian jessie. Переключено на тесты molecule. Используются новые задачи ansible FQDN.
1.2.0
Добавлена поддержка postgresql 12.
1.1.0
Добавлена поддержка списка расширений в определении и конфигурации баз данных.
1.0.0
Первая версия.
Лицензия
GPLv2
Информация об авторе
Лорен КОРБЕС laurent.corbes@enix.fr - http://www.enix.io
ansible-galaxy install enix/ansible-postgresql