postgresql

Ansible Роль: PostgreSQL

CI

Устанавливает и настраивает сервер PostgreSQL на серверах Debian/Ubuntu.

Требования

Нет особых требований; обратите внимание, что для этой роли требуется доступ root, поэтому запустите ее в плейбуке с глобальным become: true, или вызовите роль в вашем плейбуке следующим образом:

- hosts: database
  become: true
  roles:
    - role: mivek.postgresql

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

Доступные переменные перечислены ниже с значениями по умолчанию (см. defaults/main.yml):

postgresql_restarted_state: "restarted"

Устанавливает состояние сервиса при изменении конфигурации. Рекомендуемые значения — restarted или reloaded.

postgresql_user: postgres
postgresql_group: postgres

Пользователь и группа, под которыми будет работать PostgreSQL.

postgresql_unix_socket_directories:
  - /var/run/postgresql

Директории (обычно одна, но может быть несколько), в которых будет создан сокет PostgreSQL.

postgresql_service_state: started
postgresql_service_enabled: true

Контроль состояния сервиса postgresql и его автозапуска при загрузке системы.

postgresql_auth_method: scram-sha-256

Метод аутентификации. Можно выбрать scram-sha-256 или md5.

postgresql_global_config_options:
  - option: unix_socket_directories
    value: '{{ postgresql_unix_socket_directories | join(",") }}'
  - option: log_directory
    value: 'log'
  - option: password_encryption
    value: "{{ postgresql_auth_method }}"

Глобальные параметры конфигурации, которые будут установлены в postgresql.conf. Для версий PostgreSQL старше 9.3 нужно хотя бы переопределить эту переменную и установить option в unix_socket_directory. Если вы переопределяете значение option: log_directory с другим путем, относительным или абсолютным, эта роль создаст его за вас.

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 }
  - { type: host, database: all, user: all, addresses: ['10.0.0.1/32', '10.0.0.2/32'], auth_method: md5 }

Настройка записей для аутентификации на основе хоста в pg_hba.conf. Параметры для записей включают:

  • type (обязательный)
  • database (обязательный)
  • user (обязательный)
  • addresses список адресов
  • address (один из этих или следующие два обязательны)
  • ip_address
  • ip_mask
  • auth_method (обязательный)
  • auth_options (необязательный)

Если переопределяете, убедитесь, что вы скопировали все существующие записи из defaults/main.yml, если нужно сохранить старые записи.

postgresql_locales:
  - 'en_US.UTF-8'

(Только для Debian/Ubuntu) Используется для генерации локалей, используемых базами данных PostgreSQL.

postgresql_databases:
  - name: exampledb # обязательно; остальное необязательно
    lc_collate: # по умолчанию 'en_US.UTF-8'
    lc_ctype: # по умолчанию 'en_US.UTF-8'
    encoding: # по умолчанию 'UTF-8'
    template: # по умолчанию 'template0'
    login_host: # по умолчанию 'localhost'
    login_password: # по умолчанию не задан
    login_user: # по умолчанию 'postgresql_user'
    login_unix_socket: # по умолчанию 1-й из postgresql_unix_socket_directories
    port: # по умолчанию не задан
    owner: # по умолчанию postgresql_user
    state: # по умолчанию 'present'

Список баз данных, которые должны существовать на сервере. Обязательно только name; все остальные свойства необязательны.

postgresql_users:
  - name: jdoe #обязательно; остальное необязательно
    password: # по умолчанию не задан
    encrypted: # по умолчанию не задан
    priv: # по умолчанию не задан
    role_attr_flags: # по умолчанию не задан
    db: # по умолчанию не задан
    login_host: # по умолчанию 'localhost'
    login_password: # по умолчанию не задан
    login_user: # по умолчанию '{{ postgresql_user }}'
    login_unix_socket: # по умолчанию 1-й из postgresql_unix_socket_directories
    port: # по умолчанию не задан
    state: # по умолчанию 'present'

Список пользователей, которые должны существовать на сервере. Обязательно только name; все остальные свойства необязательны.

postgresql_privs:
  - database: "{{ item.database }}"
    login_host: "{{ item.login_host | default('localhost') }}"
    login_password: "{{ item.login_password | default(omit) }}"
    login_user: "{{ item.login_user | default(postgresql_user) }}"
    login_unix_socket: "{{ item.login_unix_socket | default(postgresql_unix_socket_directories[0]) }}"
    objs: "{{ item.objs | default(omit) }}"
    privs: "{{ item.privs | default(omit) }}"
    roles: "{{ item.roles }}"
    schema: "{{ item.schema | default(omit) }}"
    type: "{{ item.type | default(omit) }}"
    state: "{{ item.state | default('present') }}"

Список привилегий, которые должны существовать на сервере. Обязательно только database и roles.

postgresql_pgpass_users:
  - hostname: localhost
    port: 5432
    database: db1
    name: jdoe

Список пользователей для добавления в pgpass. Пароль не обязателен и берется из переменной postgresql_users.

postgresql_users_no_log: true

Определяет, следует ли выводить данные пользователей (включая конфиденциальную информацию, такую как пароли) при управлении пользователями.

postgresql_privs_no_log: true

Определяет, следует ли выводить данные о привилегиях при управлении привилегиями.

postgresql_version: [специфика ОС]
postgresql_data_dir: [специфика ОС]
postgresql_bin_path: [специфика ОС]
postgresql_config_path: [специфика ОС]
postgresql_daemon: [специфика ОС]
postgresql_packages: [специфика ОС]

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

Зависимости

Нет.

Пример плейбука

- hosts: database
  become: true
  roles:
    - mivek.postgresql

Внутри vars/main.yml:

postgresql_databases:
  - name: example_db
postgresql_users:
  - name: example_user
    password: supersecure

Лицензия

MIT / BSD

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

Эта роль была создана в 2016 году Джеффом Гирлингом, автором Ansible for DevOps.

О проекте

PostgreSQL server for Linux.

Установить
ansible-galaxy install mivek/ansible-role-postgresql
Лицензия
mit
Загрузки
285
Владелец