mirror of
http://172.20.10.11:3000/gitadmin/INSIGHT-MVP.git
synced 2026-06-25 00:16:41 +02:00
- PostgreSQL: initdb durch rsync-Ansatz ersetzt (Ubuntu/Debian kompatibel) Data-Dir wird via rsync vom Default-Cluster nach /data/postgresql migriert - PostgreSQL: de_DE.UTF-8 Locale-Generierung als ersten Task hinzugefügt - Redis: redis-cli ping mit Passwort-Auth (no_log: true) - Playbooks: vars_files: ../vault.yml in dbs01/aps01/web01 ergänzt Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
150 lines
4.1 KiB
YAML
150 lines
4.1 KiB
YAML
---
|
|
# Role: postgresql
|
|
# Installiert und konfiguriert PostgreSQL 16 auf DBS01
|
|
# Daten werden vom Default-Cluster nach {{ postgresql_data_dir }} verschoben
|
|
|
|
- name: "de_DE.UTF-8 Locale generieren"
|
|
locale_gen:
|
|
name: de_DE.UTF-8
|
|
state: present
|
|
|
|
- name: "rsync installieren (für Datenmigration)"
|
|
apt:
|
|
name: rsync
|
|
state: present
|
|
|
|
- name: "PostgreSQL GPG Key hinzufügen"
|
|
apt_key:
|
|
url: https://www.postgresql.org/media/keys/ACCC4CF8.asc
|
|
state: present
|
|
|
|
- name: "PostgreSQL Repository hinzufügen"
|
|
apt_repository:
|
|
repo: "deb http://apt.postgresql.org/pub/repos/apt {{ ansible_distribution_release }}-pgdg main"
|
|
state: present
|
|
filename: pgdg
|
|
|
|
- name: "PostgreSQL {{ postgresql_version }} installieren"
|
|
apt:
|
|
name:
|
|
- "postgresql-{{ postgresql_version }}"
|
|
- "postgresql-client-{{ postgresql_version }}"
|
|
- "postgresql-contrib-{{ postgresql_version }}"
|
|
- python3-psycopg2
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: "Prüfen ob Data-Dir bereits PostgreSQL-Daten enthält"
|
|
stat:
|
|
path: "{{ postgresql_data_dir }}/PG_VERSION"
|
|
register: pg_data_exists
|
|
|
|
- name: "PostgreSQL Service stoppen (für Datenmigration in /data)"
|
|
service:
|
|
name: "postgresql@{{ postgresql_version }}-main"
|
|
state: stopped
|
|
when:
|
|
- postgresql_data_dir != '/var/lib/postgresql/' ~ postgresql_version ~ '/main'
|
|
- not pg_data_exists.stat.exists
|
|
|
|
- name: "PostgreSQL Data-Verzeichnis anlegen"
|
|
file:
|
|
path: "{{ postgresql_data_dir }}"
|
|
state: directory
|
|
owner: postgres
|
|
group: postgres
|
|
mode: '0700'
|
|
when:
|
|
- postgresql_data_dir != '/var/lib/postgresql/' ~ postgresql_version ~ '/main'
|
|
- not pg_data_exists.stat.exists
|
|
|
|
- name: "PostgreSQL Default-Cluster nach {{ postgresql_data_dir }} kopieren"
|
|
command: >
|
|
rsync -a --delete
|
|
/var/lib/postgresql/{{ postgresql_version }}/main/
|
|
{{ postgresql_data_dir }}/
|
|
when:
|
|
- postgresql_data_dir != '/var/lib/postgresql/' ~ postgresql_version ~ '/main'
|
|
- not pg_data_exists.stat.exists
|
|
|
|
- name: "Berechtigungen auf Data-Dir sicherstellen"
|
|
file:
|
|
path: "{{ postgresql_data_dir }}"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: '0700'
|
|
when: postgresql_data_dir != '/var/lib/postgresql/' ~ postgresql_version ~ '/main'
|
|
|
|
- name: "postgresql.conf konfigurieren (inkl. data_directory)"
|
|
template:
|
|
src: postgresql.conf.j2
|
|
dest: "/etc/postgresql/{{ postgresql_version }}/main/postgresql.conf"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: '0644'
|
|
notify: restart postgresql
|
|
|
|
- name: "pg_hba.conf konfigurieren"
|
|
template:
|
|
src: pg_hba.conf.j2
|
|
dest: "/etc/postgresql/{{ postgresql_version }}/main/pg_hba.conf"
|
|
owner: postgres
|
|
group: postgres
|
|
mode: '0640'
|
|
notify: reload postgresql
|
|
|
|
- name: "PostgreSQL Service aktivieren und starten"
|
|
service:
|
|
name: "postgresql@{{ postgresql_version }}-main"
|
|
state: started
|
|
enabled: true
|
|
|
|
- name: "Warten bis PostgreSQL bereit ist"
|
|
wait_for:
|
|
host: localhost
|
|
port: "{{ postgresql_port | default(5432) }}"
|
|
timeout: 30
|
|
|
|
- name: "PostgreSQL INSIGHT Datenbanken anlegen"
|
|
become_user: postgres
|
|
postgresql_db:
|
|
name: "{{ item }}"
|
|
encoding: UTF8
|
|
lc_collate: de_DE.UTF-8
|
|
lc_ctype: de_DE.UTF-8
|
|
template: template0
|
|
state: present
|
|
loop: "{{ postgresql_databases }}"
|
|
when: postgresql_databases is defined
|
|
|
|
- name: "PostgreSQL INSIGHT User anlegen"
|
|
become_user: postgres
|
|
postgresql_user:
|
|
name: "{{ item.name }}"
|
|
password: "{{ item.password }}"
|
|
role_attr_flags: "{{ item.role_attr_flags | default('LOGIN') }}"
|
|
state: present
|
|
loop: "{{ postgresql_users }}"
|
|
when: postgresql_users is defined
|
|
no_log: true
|
|
|
|
- name: "PostgreSQL Datenbankberechtigungen setzen"
|
|
become_user: postgres
|
|
postgresql_privs:
|
|
db: "{{ item.db }}"
|
|
role: "{{ item.role }}"
|
|
privs: "{{ item.privs }}"
|
|
type: database
|
|
state: present
|
|
loop: "{{ postgresql_grants }}"
|
|
when: postgresql_grants is defined
|
|
|
|
- name: "PostgreSQL Version ausgeben"
|
|
become_user: postgres
|
|
command: psql --version
|
|
register: pg_version
|
|
changed_when: false
|
|
|
|
- name: "PostgreSQL bereit"
|
|
debug:
|
|
msg: "{{ pg_version.stdout }} — Data-Dir: {{ postgresql_data_dir }}"
|