geerlingguy.postgresql

Rol de Ansible: PostgreSQL

CI

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

Requisitos

No se requieren requisitos especiales; ten en cuenta que este rol requiere acceso root, por lo que debes ejecutarlo en un playbook con become: yes, o invocar el rol en tu playbook de la siguiente manera:

- hosts: database
  roles:
    - role: geerlingguy.postgresql
      become: yes

Variables de Rol

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

postgresql_enablerepo: ""

(Solo RHEL/CentOS) Puedes establecer un repositorio para usar en la instalación de PostgreSQL pasándolo aquí.

postgresql_restarted_state: "restarted"

Establece el estado del servicio cuando se realizan cambios en la configuración. Los valores recomendados son restarted o reloaded.

postgresql_python_library: python-psycopg2

Biblioteca utilizada por Ansible para comunicarse con PostgreSQL. Si usas Python 3 (por ejemplo, configurado con ansible_python_interpreter), debes cambiarlo a python3-psycopg2.

postgresql_user: postgres
postgresql_group: postgres

El usuario y grupo con los que se ejecutará PostgreSQL.

postgresql_unix_socket_directories:
  - /var/run/postgresql

Los directorios (normalmente 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 postgresql y si debe iniciarse al arrancar.

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

Opciones de configuración global que se establecerán en postgresql.conf. Para versiones de PostgreSQL anteriores a la 9.3, necesitas sobrescribir al menos esta variable y establecer option a unix_socket_directory. Si sobrescribes el valor de option: log_directory con otra ruta, ya sea relativa o absoluta, este rol la 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 }

Configura 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)
  • address (uno de estos o los dos siguientes son requeridos)
  • 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) Utilizado para generar las configuraciones regionales utilizadas 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 configurado
    login_user: # predeterminado a 'postgresql_user'
    login_unix_socket: # predeterminado al primero de postgresql_unix_socket_directories
    port: # predeterminado a no configurado
    owner: # predeterminado a postgresql_user
    state: # predeterminado a 'present'

Una lista de bases de datos que 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 configurado
    encrypted: # predeterminado a no configurado
    priv: # predeterminado a no configurado
    role_attr_flags: # predeterminado a no configurado
    db: # predeterminado a no configurado
    login_host: # predeterminado a 'localhost'
    login_password: # predeterminado a no configurado
    login_user: # predeterminado a '{{ postgresql_user }}'
    login_unix_socket: # predeterminado al primero de postgresql_unix_socket_directories
    port: # predeterminado a no configurado
    state: # predeterminado a 'present'

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

postgres_users_no_log: true

Si se debe o no mostrar los datos del usuario (que pueden contener información sensible, como contraseñas) al administrar usuarios.

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 del sistema operativo que se establecen mediante archivos incluidos en el directorio vars de este rol. No deben ser sobrescritas a menos que estés usando una versión de PostgreSQL que no fue instalada utilizando paquetes del sistema.

Dependencias

Ninguna.

Ejemplo de Playbook

- hosts: database
  become: yes
  vars_files:
    - vars/main.yml
  roles:
    - geerlingguy.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 geerlingguy.postgresql
Licencia
mit
Descargas
3.3M
Propietario
Father, author, developer, maker. Sometimes called "an inflammatory enigma". #stl #drupal #ansible #k8s #raspberrypi #crohns