fix: PostgreSQL data migration, Redis auth, Vault-Loading in Playbooks

- 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>
This commit is contained in:
Thomas Reitz 2026-03-15 16:34:45 +01:00
parent d212a7623f
commit 8e235c584e
5 changed files with 64 additions and 28 deletions

View file

@ -5,6 +5,8 @@
- name: "INSIGHT-APS01 Setup" - name: "INSIGHT-APS01 Setup"
hosts: insight_aps hosts: insight_aps
become: true become: true
vars_files:
- ../vault.yml
roles: roles:
- role: common - role: common
- role: disk_setup - role: disk_setup

View file

@ -5,6 +5,8 @@
- name: "INSIGHT-DBS01 Setup" - name: "INSIGHT-DBS01 Setup"
hosts: insight_dbs hosts: insight_dbs
become: true become: true
vars_files:
- ../vault.yml
roles: roles:
- role: common - role: common
- role: disk_setup - role: disk_setup

View file

@ -5,6 +5,8 @@
- name: "INSIGHT-WEB01 Setup" - name: "INSIGHT-WEB01 Setup"
hosts: insight_web hosts: insight_web
become: true become: true
vars_files:
- ../vault.yml
roles: roles:
- role: common - role: common
- role: disk_setup - role: disk_setup

View file

@ -1,6 +1,17 @@
--- ---
# Role: postgresql # Role: postgresql
# Installiert und konfiguriert PostgreSQL 16 auf DBS01 # 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" - name: "PostgreSQL GPG Key hinzufügen"
apt_key: apt_key:
@ -23,6 +34,19 @@
state: present state: present
update_cache: true 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" - name: "PostgreSQL Data-Verzeichnis anlegen"
file: file:
path: "{{ postgresql_data_dir }}" path: "{{ postgresql_data_dir }}"
@ -30,29 +54,28 @@
owner: postgres owner: postgres
group: postgres group: postgres
mode: '0700' mode: '0700'
when: postgresql_data_dir != '/var/lib/postgresql'
- name: "PostgreSQL Service stoppen (vor Konfiguration)"
service:
name: "postgresql@{{ postgresql_version }}-main"
state: stopped
when: postgresql_data_dir != '/var/lib/postgresql'
- name: "Prüfen ob PostgreSQL Cluster bereits initialisiert"
stat:
path: "{{ postgresql_data_dir }}/PG_VERSION"
register: pg_cluster_initialized
- name: "PostgreSQL Cluster in Data-Dir initialisieren"
become_user: postgres
command: >
/usr/lib/postgresql/{{ postgresql_version }}/bin/initdb
-D {{ postgresql_data_dir }}
when: when:
- postgresql_data_dir != '/var/lib/postgresql' - postgresql_data_dir != '/var/lib/postgresql/' ~ postgresql_version ~ '/main'
- not pg_cluster_initialized.stat.exists - not pg_data_exists.stat.exists
- name: "postgresql.conf konfigurieren" - 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: template:
src: postgresql.conf.j2 src: postgresql.conf.j2
dest: "/etc/postgresql/{{ postgresql_version }}/main/postgresql.conf" dest: "/etc/postgresql/{{ postgresql_version }}/main/postgresql.conf"
@ -76,6 +99,12 @@
state: started state: started
enabled: true enabled: true
- name: "Warten bis PostgreSQL bereit ist"
wait_for:
host: localhost
port: "{{ postgresql_port | default(5432) }}"
timeout: 30
- name: "PostgreSQL INSIGHT Datenbanken anlegen" - name: "PostgreSQL INSIGHT Datenbanken anlegen"
become_user: postgres become_user: postgres
postgresql_db: postgresql_db:
@ -99,7 +128,7 @@
when: postgresql_users is defined when: postgresql_users is defined
no_log: true no_log: true
- name: "PostgreSQL Berechtigungen setzen" - name: "PostgreSQL Datenbankberechtigungen setzen"
become_user: postgres become_user: postgres
postgresql_privs: postgresql_privs:
db: "{{ item.db }}" db: "{{ item.db }}"
@ -110,12 +139,12 @@
loop: "{{ postgresql_grants }}" loop: "{{ postgresql_grants }}"
when: postgresql_grants is defined when: postgresql_grants is defined
- name: "PostgreSQL Version prüfen" - name: "PostgreSQL Version ausgeben"
become_user: postgres become_user: postgres
command: psql --version command: psql --version
register: pg_version register: pg_version
changed_when: false changed_when: false
- name: "PostgreSQL Version ausgeben" - name: "PostgreSQL bereit"
debug: debug:
msg: "{{ pg_version.stdout }}" msg: "{{ pg_version.stdout }} — Data-Dir: {{ postgresql_data_dir }}"

View file

@ -43,13 +43,14 @@
enabled: true enabled: true
- name: "Redis Konnektivität prüfen" - name: "Redis Konnektivität prüfen"
command: redis-cli ping command: redis-cli -a {{ redis_password }} ping
register: redis_ping register: redis_ping
changed_when: false changed_when: false
no_log: true
retries: 3 retries: 3
delay: 2 delay: 2
until: redis_ping.stdout == "PONG" until: redis_ping.stdout == "PONG"
- name: "Redis Status ausgeben" - name: "Redis bereit"
debug: debug:
msg: "Redis antwortet: {{ redis_ping.stdout }}" msg: "Redis antwortet: PONG"