chore: update
This commit is contained in:
+137
-58
@@ -3,101 +3,180 @@
|
||||
# PostgreSQL Installation (vm-postgres uniquement)
|
||||
# ============================================
|
||||
- name: Installation et configuration de PostgreSQL
|
||||
hosts: postgres
|
||||
hosts: uber-stup
|
||||
become: true
|
||||
gather_facts: true
|
||||
|
||||
tasks:
|
||||
- name: Installer les dépendances système
|
||||
apt:
|
||||
# ============================================================
|
||||
# Dépendances requises
|
||||
# ============================================================
|
||||
- name: Installer les dépendances pour le dépôt APT
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- wget
|
||||
- gnupg2
|
||||
- lsb-release
|
||||
- curl
|
||||
- ca-certificates
|
||||
- apt-transport-https
|
||||
- acl # Nécessaire pour become_user
|
||||
- lsb-release
|
||||
- python3-psycopg2
|
||||
- acl
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
# ============================================================
|
||||
# Ajout du dépôt officiel PostgreSQL
|
||||
# ============================================================
|
||||
- name: Ajouter la clé GPG du dépôt PostgreSQL
|
||||
apt_key:
|
||||
ansible.builtin.apt_key:
|
||||
url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
|
||||
state: present
|
||||
|
||||
- name: Ajouter le dépôt PostgreSQL
|
||||
apt_repository:
|
||||
- name: Ajouter le dépôt PostgreSQL 16
|
||||
ansible.builtin.apt_repository:
|
||||
repo: "deb http://apt.postgresql.org/pub/repos/apt {{ ansible_distribution_release }}-pgdg main"
|
||||
state: present
|
||||
filename: pgdg
|
||||
|
||||
- name: Installer PostgreSQL {{ postgres_version }}
|
||||
apt:
|
||||
# ============================================================
|
||||
# Installation PostgreSQL 16
|
||||
# ============================================================
|
||||
- name: Installer PostgreSQL 16
|
||||
ansible.builtin.apt:
|
||||
name:
|
||||
- postgresql-{{ postgres_version }}
|
||||
- postgresql-contrib-{{ postgres_version }}
|
||||
- python3-psycopg2
|
||||
- "postgresql-{{ pg_version }}"
|
||||
- "postgresql-client-{{ pg_version }}"
|
||||
- "postgresql-contrib-{{ pg_version }}"
|
||||
state: present
|
||||
update_cache: yes
|
||||
|
||||
- name: S'assurer que PostgreSQL est démarré
|
||||
systemd:
|
||||
- name: Démarrer et activer PostgreSQL
|
||||
ansible.builtin.systemd:
|
||||
name: postgresql
|
||||
state: started
|
||||
enabled: yes
|
||||
|
||||
- name: Définir le mot de passe du user postgres
|
||||
postgresql_user:
|
||||
name: postgres
|
||||
password: "{{ postgres_password }}"
|
||||
state: present
|
||||
become_user: postgres
|
||||
|
||||
- name: Créer les bases de données PostgreSQL
|
||||
postgresql_db:
|
||||
name: "{{ item.name }}"
|
||||
owner: postgres
|
||||
state: present
|
||||
loop: "{{ postgres_databases }}"
|
||||
become_user: postgres
|
||||
|
||||
- name: Configurer pg_hba.conf pour autoriser le backend
|
||||
blockinfile:
|
||||
path: "/etc/postgresql/{{ postgres_version }}/main/pg_hba.conf"
|
||||
block: |
|
||||
# Connexions locales
|
||||
local all postgres peer
|
||||
host all postgres 127.0.0.1/32 scram-sha-256
|
||||
# Connexions backend LAN
|
||||
host all postgres 192.168.1.0/24 scram-sha-256
|
||||
marker: "# {mark} ANSIBLE MANAGED BLOCK"
|
||||
notify: Redémarrer PostgreSQL
|
||||
tags:
|
||||
- reload
|
||||
|
||||
- name: Configurer PostgreSQL pour écouter sur toutes les interfaces
|
||||
lineinfile:
|
||||
path: "/etc/postgresql/{{ postgres_version }}/main/postgresql.conf"
|
||||
# ============================================================
|
||||
# Configuration PostgreSQL
|
||||
# ============================================================
|
||||
- name: Configurer l'écoute sur localhost
|
||||
ansible.builtin.lineinfile:
|
||||
path: "/etc/postgresql/{{ pg_version }}/main/postgresql.conf"
|
||||
regexp: "^#?listen_addresses"
|
||||
line: "listen_addresses = '*'"
|
||||
line: "listen_addresses = 'localhost'"
|
||||
notify: Restart postgresql
|
||||
|
||||
- name: Configurer le port
|
||||
ansible.builtin.lineinfile:
|
||||
path: "/etc/postgresql/{{ pg_version }}/main/postgresql.conf"
|
||||
regexp: "^#?port"
|
||||
line: "port = {{ db_port }}"
|
||||
notify: Restart postgresql
|
||||
|
||||
# ============================================================
|
||||
# Locale requise
|
||||
# ============================================================
|
||||
- name: Générer la locale fr_FR.UTF-8
|
||||
ansible.builtin.command: locale-gen fr_FR.UTF-8
|
||||
register: locale_gen
|
||||
changed_when: "'Generation complete' in locale_gen.stdout"
|
||||
|
||||
- name: Mettre à jour les locales
|
||||
ansible.builtin.command: update-locale
|
||||
when: locale_gen.changed
|
||||
|
||||
# ============================================================
|
||||
# Création de la base de données et configuration utilisateur
|
||||
# ============================================================
|
||||
- name: Définir le mot de passe de l'utilisateur postgres
|
||||
become_user: postgres
|
||||
ansible.builtin.postgresql_user:
|
||||
name: "{{ db_user }}"
|
||||
password: "{{ db_password }}"
|
||||
state: present
|
||||
notify: Redémarrer PostgreSQL
|
||||
tags:
|
||||
- reload
|
||||
|
||||
- name: Vérifier si la base de données existe
|
||||
become_user: postgres
|
||||
ansible.builtin.command: psql -tAc "SELECT 1 FROM pg_database WHERE datname='{{ db_name }}'"
|
||||
register: db_exists
|
||||
changed_when: false
|
||||
|
||||
- name: Créer la base de données avec ICU
|
||||
become_user: postgres
|
||||
ansible.builtin.command: >
|
||||
psql -c "CREATE DATABASE {{ db_name }}
|
||||
OWNER {{ db_user }}
|
||||
ENCODING 'UTF8'
|
||||
LOCALE_PROVIDER icu
|
||||
ICU_LOCALE 'fr-FR'
|
||||
TEMPLATE template0"
|
||||
when: db_exists.stdout != "1"
|
||||
|
||||
- name: Accorder tous les privilèges sur la base
|
||||
become_user: postgres
|
||||
ansible.builtin.postgresql_privs:
|
||||
db: "{{ db_name }}"
|
||||
role: "{{ db_user }}"
|
||||
type: database
|
||||
privs: ALL
|
||||
state: present
|
||||
|
||||
# ============================================================
|
||||
# Authentification pg_hba.conf
|
||||
# ============================================================
|
||||
- name: Configurer l'authentification md5 pour les connexions locales
|
||||
ansible.builtin.postgresql_pg_hba:
|
||||
dest: "/etc/postgresql/{{ pg_version }}/main/pg_hba.conf"
|
||||
contype: host
|
||||
databases: "{{ db_name }}"
|
||||
users: "{{ db_user }}"
|
||||
source: "127.0.0.1/32"
|
||||
method: md5
|
||||
notify: Restart postgresql
|
||||
|
||||
- name: Configurer l'authentification md5 pour IPv6 local
|
||||
ansible.builtin.postgresql_pg_hba:
|
||||
dest: "/etc/postgresql/{{ pg_version }}/main/pg_hba.conf"
|
||||
contype: host
|
||||
databases: "{{ db_name }}"
|
||||
users: "{{ db_user }}"
|
||||
source: "::1/128"
|
||||
method: md5
|
||||
notify: Restart postgresql
|
||||
|
||||
# ============================================================
|
||||
# Vérification
|
||||
# ============================================================
|
||||
- name: Vérifier la version de PostgreSQL
|
||||
become_user: postgres
|
||||
ansible.builtin.command: psql --version
|
||||
register: pg_version_check
|
||||
changed_when: false
|
||||
|
||||
- name: Afficher la version
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ pg_version_check.stdout }}"
|
||||
|
||||
- name: Vérifier que la base existe
|
||||
become_user: postgres
|
||||
ansible.builtin.command: psql -lqt
|
||||
register: pg_databases
|
||||
changed_when: false
|
||||
|
||||
- name: Afficher les bases de données
|
||||
ansible.builtin.debug:
|
||||
msg: "{{ pg_databases.stdout_lines }}"
|
||||
|
||||
handlers:
|
||||
- name: Redémarrer PostgreSQL
|
||||
systemd:
|
||||
- name: Restart postgresql
|
||||
ansible.builtin.systemd:
|
||||
name: postgresql
|
||||
state: restarted
|
||||
tags:
|
||||
- reload
|
||||
|
||||
# ============================================
|
||||
# Redis Installation (vm-redis uniquement)
|
||||
# ============================================
|
||||
- name: Installation et configuration de Redis
|
||||
hosts: redis
|
||||
hosts: uber-stup
|
||||
become: true
|
||||
gather_facts: true
|
||||
|
||||
|
||||
Reference in New Issue
Block a user