ANXS.postgresql

ANXS - PostgreSQL Estado de Construcción


¡Se necesita ayuda! Si puedes y quieres ayudar a mantener este rol de Ansible, por favor abre un problema en GitHub. Muchas personas parecen usar este rol y necesitamos asistencia (¡obviamente!). 💖


Rol de Ansible que instala y configura PostgreSQL, extensiones, bases de datos y usuarios.

Instalación

Esto ha sido probado en Ansible 2.4.0 y versiones superiores.

Para instalar:

ansible-galaxy install anxs.postgresql

Ejemplo de Playbook

Un ejemplo de cómo incluir este rol:

---
- hosts: servidor-postgresql
  roles:
    - role: ANXS.postgresql
      become: yes

Un ejemplo de cómo incluir este rol como una tarea:

---
- hosts: servidor-postgresql
  tasks:
    - block: # solución alternativa, ver https://stackoverflow.com/a/56558842
        - name: Instalación y configuración de PSQL
          include_role:
            name: ANXS.postgresql
          vars:
            postgresql_users:
              - name: abc
                password: abc
      become: true

Dependencias

  • ANXS.monit (Galaxy/GH) si deseas protección de monit (en ese caso, debes configurar monit_protection: true)

Matriz de compatibilidad

Distribución / 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: - probado, funciona bien
  • :warning: - no para uso en producción
  • :grey_question: - funcionará en el futuro (ayuda si puedes)
  • :interrobang: - tal vez funcione, no probado
  • :no_entry: - ha llegado al final de su vida útil (EOL)

Variables

# Configuraciones básicas
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

# Lista de bases de datos a crear (opcional)
# Nota: para mayor flexibilidad con las extensiones, usa la configuración postgresql_database_extensions.
postgresql_databases:
  - name: foobar
    owner: baz          # opcional; especifica el propietario de la base de datos
    hstore: yes         # bandera para instalar la extensión hstore en esta base de datos (sí/no)
    uuid_ossp: yes      # bandera para instalar la extensión uuid-ossp en esta base de datos (sí/no)
    citext: yes         # bandera para instalar la extensión citext en esta base de datos (sí/no)
    encoding: "UTF-8"   # sobrescribir la variable global {{ postgresql_encoding }} por base de datos
    state: "present"    # opcional; uno de 'present', 'absent', 'dump', 'restore'
    lc_collate: "en_GB.UTF-8"   # sobrescribir la variable global {{ postgresql_locale }} por base de datos
    lc_ctype: "en_GB.UTF-8"     # sobrescribir la variable global {{ postgresql_ctype }} por base de datos

# Lista de extensiones de base de datos a crear (opcional)
postgresql_database_extensions:
  - db: foobar
    extensions:
      - hstore
      - citext

# Lista de usuarios a crear (opcional)
postgresql_users:
  - name: baz
    pass: pass
    encrypted: yes  # si la contraseña debe ser encriptada, postgresql >= 10 solo acepta contraseñas encriptadas
    state: "present"    # opcional; uno de 'present', 'absent'

# Lista de esquemas a crear (opcional)
postgresql_database_schemas:
  - database: foobar           # nombre de la base de datos
    schema: acme               # nombre del esquema
    state: present

  - database: foobar           # nombre de la base de datos
    schema: acme_baz           # nombre del esquema
    owner: baz                 # nombre del propietario
    state: present

# Lista de privilegios de usuario a aplicar (opcional)
postgresql_user_privileges:
  - name: baz                   # nombre de usuario
    db: foobar                  # base de datos
    priv: "ALL"                 # formato de cadena de privilegio: ejemplo: INSERT,UPDATE/tabla:SELECT/otra_tabla:ALL
    role_attr_flags: "CREATEDB" # banderas de atributo de rol

Hay muchos más ajustes y configuraciones que puedes encontrar en el defaults/main.yml

Pruebas - Molecule

Este proyecto viene con una configuración de molecule. Por favor revisa ./molecule/README.md

Ejemplos:

molecule test

Pruebas - Vagrant

Este proyecto viene con un Vagrantfile, esta es una forma rápida y fácil de probar cambios en el rol, enciéndelo con vagrant up

Consulta la documentación de vagrant para configurar vagrant

Una vez que tu VM esté activa, puedes reprovisionarla usando vagrant provision o ansible-playbook tests/playbook.yml -i vagrant-inventory

Si deseas experimentar con el play de prueba, revisa tests/playbook.yml y cambia las variables en tests/vars.yml

Si vas a contribuir, primero prueba tus cambios dentro del entorno de vagrant (usando la distribución seleccionada), y si es posible, asegúrate de que tu cambio esté cubierto en las pruebas encontradas en .travis.yml

Licencia

Licenciado bajo la Licencia MIT. Consulta el archivo LICENSE para más detalles.

Gracias

Creador:

Mantenedores:

Principales Contribuyentes:

Comentarios, informes de errores, solicitudes, ...

¡Son bienvenidos!

Acerca del proyecto

Install and configure PostgreSQL, dependencies, extensions, databases and users.

Instalar
ansible-galaxy install ANXS.postgresql
Licencia
mit
Descargas
525.1k
Propietario
DevOPS/System and network engineer, cyber-security lover. Blockchain enthusiast!