ANXS.postgresql

ANXS - PostgreSQL Statut de construction


De l'aide demandée ! Si vous êtes capable et désireux d'aider à maintenir ce rôle Ansible, veuillez ouvrir un problème sur GitHub. Beaucoup de personnes semblent utiliser ce rôle et nous avons (évidemment) besoin d'assistance ! 💖


Rôle Ansible qui installe et configure PostgreSQL, ses extensions, bases de données et utilisateurs.

Installation

Ce rôle a été testé sur Ansible 2.4.0 et versions supérieures.

Pour installer :

ansible-galaxy install anxs.postgresql

Exemple de Playbook

Un exemple d'inclusion de ce rôle :

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

Un exemple d'inclusion de ce rôle comme une tâche :

---
- hosts: postgresql-server
  tasks:
    - block: # solution de contournement, voir https://stackoverflow.com/a/56558842
        - name: Installation et configuration de PSQL
          include_role:
            name: ANXS.postgresql
          vars:
            postgresql_users:
              - name: abc
                password: abc
      become: true

Dépendances

  • ANXS.monit (Galaxy/GH) si vous souhaitez une protection avec monit (dans ce cas, vous devez définir monit_protection: true)

Matrice de compatibilité

Distribution / 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: - testé, fonctionne bien
  • :warning: - pas pour un usage en production
  • :grey_question: - fonctionnera à l'avenir (aidez si vous pouvez)
  • :interrobang: - peut-être fonctionne, pas testé
  • :no_entry: - a atteint la fin de la vie (EOL)

Variables

# Paramètres de base
postgresql_version: 16
postgresql_encoding: "UTF-8"
postgresql_locale: "fr_FR.UTF-8"
postgresql_ctype: "fr_FR.UTF-8"

postgresql_admin_user: "postgres"
postgresql_default_auth_method: "peer"

postgresql_cluster_name: main
postgresql_cluster_reset: false

# Liste des bases de données à créer (optionnel)
# Note : pour plus de flexibilité avec les extensions, utilisez le paramètre postgresql_database_extensions.
postgresql_databases:
  - name: foobar
    owner: baz          # optionnel ; spécifiez le propriétaire de la base de données
    hstore: yes         # indicateur pour installer l'extension hstore sur cette base de données (yes/no)
    uuid_ossp: yes      # indicateur pour installer l'extension uuid-ossp sur cette base de données (yes/no)
    citext: yes         # indicateur pour installer l'extension citext sur cette base de données (yes/no)
    encoding: "UTF-8"   # remplacer la variable globale {{ postgresql_encoding }} par base de données
    state: "present"    # optionnel ; une des valeurs 'present', 'absent', 'dump', 'restore'
    lc_collate: "fr_FR.UTF-8"   # remplacer la variable globale {{ postgresql_locale }} par base de données
    lc_ctype: "fr_FR.UTF-8"     # remplacer la variable globale {{ postgresql_ctype }} par base de données

# Liste des extensions de base de données à créer (optionnel)
postgresql_database_extensions:
  - db: foobar
    extensions:
      - hstore
      - citext

# Liste des utilisateurs à créer (optionnel)
postgresql_users:
  - name: baz
    pass: pass
    encrypted: yes  # si le mot de passe doit être crypté, postgresql >= 10 n'accepte que les mots de passe cryptés
    state: "present"    # optionnel ; une des valeurs 'present', 'absent'

# Liste des schémas à créer (optionnel)
postgresql_database_schemas:
  - database: foobar           # nom de la base de données
    schema: acme               # nom du schéma
    state: present

  - database: foobar           # nom de la base de données
    schema: acme_baz           # nom du schéma
    owner: baz                 # nom du propriétaire
    state: present

# Liste des privilèges utilisateurs à appliquer (optionnel)
postgresql_user_privileges:
  - name: baz                   # nom d'utilisateur
    db: foobar                  # base de données
    priv: "ALL"                 # format de chaîne de privilège : exemple : INSERT,UPDATE/table:SELECT/anothertable:ALL
    role_attr_flags: "CREATEDB" # indicateurs d'attribut de rôle

Il y a encore beaucoup d'autres réglages, que vous pouvez trouver dans defaults/main.yml

Tests - Molecule

Ce projet est livré avec une configuration de molécule. Veuillez consulter ./molecule/README.md

Exemples :

molecule test

Tests - Vagrant

Ce projet contient un Vagrantfile, c'est un moyen rapide et facile de tester des changements au rôle, lancez-le avec vagrant up

Voir la documentation vagrant pour la mise en place de vagrant

Une fois que votre VM est prête, vous pouvez la reprovisionner en utilisant vagrant provision, ou ansible-playbook tests/playbook.yml -i vagrant-inventory

Si vous souhaitez jouer avec le test play, consultez tests/playbook.yml, et modifiez les variables dans tests/vars.yml

Si vous contribuez, veuillez d'abord tester vos modifications dans l'environnement vagrant (en utilisant la distribution ciblée), et si possible, assurez-vous que votre changement est couvert par les tests trouvés dans .travis.yml

Licence

Licence MIT. Voir le fichier LICENSE pour plus de détails.

Merci

Créateur :

Mainteneurs :

Principaux contributeurs :

Retours, rapports de bogues, demandes, ...

Sont bienvenus!

À propos du projet

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

Installer
ansible-galaxy install ANXS.postgresql
Licence
mit
Téléchargements
525.1k
Propriétaire
DevOPS/System and network engineer, cyber-security lover. Blockchain enthusiast!