mirror of
http://172.20.10.11:3000/gitadmin/INSIGHT-MVP.git
synced 2026-06-25 00:16:41 +02:00
- Alle Ansible-Rollen erstellt: common, disk_setup, docker, postgresql, pgbouncer, redis, nginx, zabbix_agent - ansible.cfg mit Pipeline-Optimierung - hosts.yml mit echten IPs (DBS01=.20, APS01=.21, WEB01=.22) - group_vars für alle Server (dbs, aps, web) - Zabbix-Server auf sentinel.xinion.de gesetzt - vault.yml.example als Vorlage für Secrets - site.yml nutzt import_playbook (DBS01→APS01→WEB01) - BRIEFING.md für alle 4 Repos angelegt (Platform, Apps, Infra, Shared) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
121 lines
3.2 KiB
YAML
121 lines
3.2 KiB
YAML
---
|
|
# Role: postgresql
|
|
# Installiert und konfiguriert PostgreSQL 16 auf DBS01
|
|
|
|
- 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: "PostgreSQL Data-Verzeichnis anlegen"
|
|
file:
|
|
path: "{{ postgresql_data_dir }}"
|
|
state: directory
|
|
owner: postgres
|
|
group: postgres
|
|
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:
|
|
- postgresql_data_dir != '/var/lib/postgresql'
|
|
- not pg_cluster_initialized.stat.exists
|
|
|
|
- name: "postgresql.conf konfigurieren"
|
|
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: "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 Berechtigungen 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 prüfen"
|
|
become_user: postgres
|
|
command: psql --version
|
|
register: pg_version
|
|
changed_when: false
|
|
|
|
- name: "PostgreSQL Version ausgeben"
|
|
debug:
|
|
msg: "{{ pg_version.stdout }}"
|