ANXS.postgresql
ANXS - PostgreSQL 
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 :
- David Farrington
- Jesse Lang
- Michael Conrad
- Sébastien Alix
- Copperfield
- T. Soulabail
- Ralph von der Heyden
Retours, rapports de bogues, demandes, ...
Sont bienvenus!
Install and configure PostgreSQL, dependencies, extensions, databases and users.
ansible-galaxy install ANXS.postgresql