postgresql
ANXS - PostgreSQL
Нужна помощь! Если вы можете и хотите помочь поддерживать эту Ansible роль, пожалуйста, откройте вопрос на GitHub. Похоже, много людей используют эту роль, и нам (очевидно) нужна помощь! 💖
Ansible роль, которая устанавливает и настраивает PostgreSQL, расширения, базы данных и пользователей.
Установка
Это было протестировано на Ansible 2.4.0 и выше.
Чтобы установить:
ansible-galaxy install anxs.postgresql
Пример плейбука
Пример того, как включить эту роль:
---
- hosts: postgresql-server
roles:
- роль: ANXS.postgresql
become: yes
Пример того, как включить эту роль как задачу:
---
- hosts: postgresql-server
tasks:
- block: # обход проблемы, смотрите https://stackoverflow.com/a/56558842
- name: Установка и настройка PSQL
include_role:
name: ANXS.postgresql
vars:
postgresql_users:
- name: abc
password: abc
become: true
Зависимости
- ANXS.monit (Galaxy/GH), если вы хотите защиту monit (в этом случае необходимо установить
monit_protection: true
)
Совместимость
Дистрибутив / PostgreSQL | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|
Debian 11.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Debian 12.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Rockylinux 8.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Rockylinux 9.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Ubuntu 20.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
Ubuntu 22.04.x | :no_entry: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
- :white_check_mark: - протестировано, работает хорошо
- :warning: - не для производственного использования
- :grey_question: - будет работать в будущем (помогите, если сможете)
- :interrobang: - возможно работает, не протестировано
- :no_entry: - достигнут конец жизни (EOL)
Переменные
# Основные настройки
postgresql_version: 16
postgresql_encoding: "UTF-8"
postgresql_locale: "en_US.UTF-8"
postgresql_ctype: "en_US.UTF-8"
postgresql_admin_user: "postgres"
postgresql_default_auth_method: "peer"
postgresql_cluster_name: main
postgresql_cluster_reset: false
# Список баз данных для создания (необязательно)
# Примечание: для большей гибкости с расширениями используйте настройку postgresql_database_extensions.
postgresql_databases:
- name: foobar
owner: baz # необязательно; укажите владельца базы данных
hstore: yes # флаг для установки расширения hstore на эту базу данных (yes/no)
uuid_ossp: yes # флаг для установки расширения uuid-ossp на эту базу данных (yes/no)
citext: yes # флаг для установки расширения citext на эту базу данных (yes/no)
encoding: "UTF-8" # переопределить глобальную переменную {{ postgresql_encoding }} для каждой базы данных
state: "present" # необязательно; один из 'present', 'absent', 'dump', 'restore'
lc_collate: "en_GB.UTF-8" # переопределить глобальную переменную {{ postgresql_locale }} для каждой базы данных
lc_ctype: "en_GB.UTF-8" # переопределить глобальную переменную {{ postgresql_ctype }} для каждой базы данных
# Список расширений базы данных для создания (необязательно)
postgresql_database_extensions:
- db: foobar
extensions:
- hstore
- citext
# Список пользователей для создания (необязательно)
postgresql_users:
- name: baz
pass: pass
encrypted: yes # если пароль должен быть зашифрован, postgresql >= 10 принимает только зашифрованные пароли
state: "present" # необязательно; один из 'present', 'absent'
# Список схем для создания (необязательно)
postgresql_database_schemas:
- database: foobar # имя базы данных
schema: acme # имя схемы
state: present
- database: foobar # имя базы данных
schema: acme_baz # имя схемы
owner: baz # имя владельца
state: present
# Список привилегий пользователей (необязательно)
postgresql_user_privileges:
- name: baz # имя пользователя
db: foobar # база данных
priv: "ALL" # строка привилегий в формате: пример: INSERT,UPDATE/table:SELECT/anothertable:ALL
role_attr_flags: "CREATEDB" # флаги атрибутов роли
Существует множество других настроек, которые вы можете найти в defaults/main.yml
Тестирование - Molecule
Этот проект имеет конфигурацию Molecule. Пожалуйста, посмотрите ./molecule/README.md
Примеры:
molecule test
Тестирование - Vagrant
Этот проект имеет Vagrantfile, это быстрый и простой способ протестировать изменения в роли, запустите его с помощью vagrant up
Смотрите документацию vagrant для настройки с vagrant
Как только ваша виртуальная машина будет запущена, вы можете повторно настроить её, используя vagrant provision
или ansible-playbook tests/playbook.yml -i vagrant-inventory
Если вы хотите поэкспериментировать с тестовым плейбуком, смотрите tests/playbook.yml и измените переменные в tests/vars.yml
Если вы вносите изменения, сначала протестируйте их в окружении vagrant (используя целевой дистрибутив), и по возможности убедитесь, что ваше изменение покрыто тестами, найденными в .travis.yml
Лицензия
Лицензируется под лицензией MIT. Смотрите файл LICENSE для подробностей.
Благодарности
Создатель:
Поддержка:
Лучшие участники:
- David Farrington
- Jesse Lang
- Michael Conrad
- Sébastien Alix
- Copperfield
- T. Soulabail
- Ralph von der Heyden
Обратная связь, отчеты об ошибках, запросы и т. д.
Пожалуйста, добро пожаловать!
Install and configure PostgreSQL, dependencies, extensions, databases and users.
ansible-galaxy install MrMegaNova/postgresql