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