mivek.postgresql

Rol de Ansible: PostgreSQL

CI

Instala y configura el servidor PostgreSQL en servidores Debian/Ubuntu.

Requisitos

No hay requisitos especiales; ten en cuenta que este rol requiere acceso de root, así que ejecútalo en un playbook con become: true a nivel global, o invoca el rol en tu playbook así:

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

Variables del Rol

Las variables disponibles se enumeran a continuación, junto con sus valores predeterminados (ver defaults/main.yml):

postgresql_restarted_state: "restarted"

Establece el estado del servicio cuando se realizan cambios en la configuración. Se recomienda usar restarted o reloaded.

postgresql_user: postgres
postgresql_group: postgres

El usuario y el grupo bajo los cuales correrá PostgreSQL.

postgresql_unix_socket_directories:
  - /var/run/postgresql

Los directorios (generalmente uno, pero pueden ser varios) donde se creará el socket de PostgreSQL.

postgresql_service_state: started
postgresql_service_enabled: true

Controla el estado del servicio de PostgreSQL y si debe iniciarse al arrancar el sistema.

postgresql_auth_method: scram-sha-256

El método de autenticación a utilizar. Puede ser scram-sha-256 o 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 }}"

Opciones de configuración global que se establecerán en postgresql.conf. Para versiones de PostgreSQL anteriores a la 9.3, necesitas al menos sobreescribir esta variable y establecer la option a unix_socket_directory. Si sobrescribes el valor de option: log_directory con otra ruta, relativa o absoluta, este rol lo creará por ti.

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 }

Configura las entradas de autenticación basada en host que se establecerán en pg_hba.conf. Las opciones para las entradas incluyen:

  • type (requerido)
  • database (requerido)
  • user (requerido)
  • addresses lista de direcciones
  • address (uno de este o los dos siguientes es requerido)
  • ip_address
  • ip_mask
  • auth_method (requerido)
  • auth_options (opcional)

Si sobrescribes, asegúrate de copiar todas las entradas existentes de defaults/main.yml si necesitas preservar las entradas existentes.

postgresql_locales:
  - 'en_US.UTF-8'

(Solo Debian/Ubuntu) Se usa para generar las configuraciones locales usadas por las bases de datos PostgreSQL.

postgresql_databases:
  - name: exampledb # requerido; el resto son opcionales
    lc_collate: # predeterminado a 'en_US.UTF-8'
    lc_ctype: # predeterminado a 'en_US.UTF-8'
    encoding: # predeterminado a 'UTF-8'
    template: # predeterminado a 'template0'
    login_host: # predeterminado a 'localhost'
    login_password: # predeterminado a no establecido
    login_user: # predeterminado a 'postgresql_user'
    login_unix_socket: # predeterminado al 1º de postgresql_unix_socket_directories
    port: # predeterminado a no establecido
    owner: # predeterminado a postgresql_user
    state: # predeterminado a 'present'

Una lista de bases de datos para asegurar que existan en el servidor. Solo se requiere el name; todas las demás propiedades son opcionales.

postgresql_users:
  - name: jdoe #requerido; el resto son opcionales
    password: # predeterminado a no establecido
    encrypted: # predeterminado a no establecido
    priv: # predeterminado a no establecido
    role_attr_flags: # predeterminado a no establecido
    db: # predeterminado a no establecido
    login_host: # predeterminado a 'localhost'
    login_password: # predeterminado a no establecido
    login_user: # predeterminado a '{{ postgresql_user }}'
    login_unix_socket: # predeterminado al 1º de postgresql_unix_socket_directories
    port: # predeterminado a no establecido
    state: # predeterminado a 'present'

Una lista de usuarios para asegurar que existan en el servidor. Solo se requiere el name; todas las demás propiedades son opcionales.

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') }}"

Una lista de privilegios para asegurar que existan en el servidor. Solo se requieren el database y roles.

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

Una lista de usuarios para agregar al pgpass. La contraseña no es obligatoria y se obtiene de la variable postgresql_users.

postgresql_users_no_log: true

Si se debe mostrar información del usuario (que puede contener datos sensibles, como contraseñas) al gestionar usuarios.

postgresql_privs_no_log: true

Si se debe mostrar información de privilegios al gestionar privilegios.

postgresql_version: [específico del SO]
postgresql_data_dir: [específico del SO]
postgresql_bin_path: [específico del SO]
postgresql_config_path: [específico del SO]
postgresql_daemon: [específico del SO]
postgresql_packages: [específico del SO]

Variables específicas de OS que se establecen mediante archivos incluidos en el directorio vars de este rol. No deben ser sobrescritas a menos que uses una versión de PostgreSQL que no fue instalada usando paquetes del sistema.

Dependencias

Ninguna.

Ejemplo de Playbook

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

Dentro de vars/main.yml:

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

Licencia

MIT / BSD

Información del Autor

Este rol fue creado en 2016 por Jeff Geerling, autor de Ansible for DevOps.

Acerca del proyecto

PostgreSQL server for Linux.

Instalar
ansible-galaxy install mivek.postgresql
Licencia
mit
Descargas
331
Propietario