|
|
|
|
@ -8,7 +8,7 @@
|
|
|
|
|
name: postgres
|
|
|
|
|
uid: 2000
|
|
|
|
|
group: postgres
|
|
|
|
|
home: /var/lib/postgresql
|
|
|
|
|
home: '{{ postgres_homedir }}'
|
|
|
|
|
system: true
|
|
|
|
|
shell: /bin/bash
|
|
|
|
|
|
|
|
|
|
@ -40,29 +40,40 @@
|
|
|
|
|
- 'postgresql-{{ default_postgres_version }}'
|
|
|
|
|
- python3-psycopg2
|
|
|
|
|
|
|
|
|
|
- name: "Setup listen interfaces for postgresql instance"
|
|
|
|
|
- name: "Set vars"
|
|
|
|
|
set_fact:
|
|
|
|
|
cert_private_key: '{{ postgres_homedir }}/{{ inventory_hostname }}.{{ domain }}-key.pem'
|
|
|
|
|
cert_public_key: '{{ postgres_homedir }}/{{ inventory_hostname }}.{{ domain }}-crt.pem'
|
|
|
|
|
ca_cert: '{{ postgres_homedir }}/ca-certificate.pem'
|
|
|
|
|
|
|
|
|
|
- name: "Include role for self-signed CA"
|
|
|
|
|
include_role:
|
|
|
|
|
name: selfsigned_ca
|
|
|
|
|
|
|
|
|
|
- name: "Create certs with selfsigned CA"
|
|
|
|
|
include_role:
|
|
|
|
|
name: selfsigned_ca
|
|
|
|
|
tasks_from: _create_cert
|
|
|
|
|
vars:
|
|
|
|
|
selfsigned_ca_cert_private_key: '{{ cert_private_key }}'
|
|
|
|
|
selfsigned_ca_cert_private_key_group: postgres
|
|
|
|
|
selfsigned_ca_cert_public_key: '{{ cert_public_key }}'
|
|
|
|
|
selfsigned_ca_cacert: '{{ ca_cert }}'
|
|
|
|
|
selfsigned_ca_cert_subject:
|
|
|
|
|
CN: '{{ inventory_hostname }}.{{ domain }}'
|
|
|
|
|
selfsigned_ca_cert_altnames:
|
|
|
|
|
- 'DNS:{{ inventory_hostname }}.{{ domain }}'
|
|
|
|
|
- 'DNS:{{ inventory_hostname }}'
|
|
|
|
|
# selfsigned_ca_trigger_handler: restart postgres
|
|
|
|
|
|
|
|
|
|
- name: "Ensure postgresql.conf via evil lineinfile..."
|
|
|
|
|
lineinfile:
|
|
|
|
|
state: present
|
|
|
|
|
regex: "^listen_addresses"
|
|
|
|
|
line: "{{ postgres_listen_addresses }}"
|
|
|
|
|
regex: "{{ item.regex }}"
|
|
|
|
|
line: "{{ item.line }}"
|
|
|
|
|
path: /etc/postgresql/{{ default_postgres_version }}/main/postgresql.conf
|
|
|
|
|
register: listen_addresses
|
|
|
|
|
|
|
|
|
|
- name: "Setting 'max_connections={{ default_max_connections }}'"
|
|
|
|
|
lineinfile:
|
|
|
|
|
state: present
|
|
|
|
|
regex: "^max_connections"
|
|
|
|
|
line: "max_connections = {{ default_max_connections }}"
|
|
|
|
|
path: /etc/postgresql/{{ default_postgres_version }}/main/postgresql.conf
|
|
|
|
|
register: max_connections
|
|
|
|
|
|
|
|
|
|
- name: "Setting 'shared_buffers={{ default_shared_buffers }}'"
|
|
|
|
|
lineinfile:
|
|
|
|
|
state: present
|
|
|
|
|
regex: "^shared_buffers"
|
|
|
|
|
line: "shared_buffers = {{ default_shared_buffers }}"
|
|
|
|
|
path: /etc/postgresql/{{ default_postgres_version }}/main/postgresql.conf
|
|
|
|
|
register: shared_buffers
|
|
|
|
|
loop: '{{ postgres_config }}'
|
|
|
|
|
notify: restart postgres
|
|
|
|
|
|
|
|
|
|
- name: "Creating archive directory if necessary"
|
|
|
|
|
file:
|
|
|
|
|
@ -79,32 +90,14 @@
|
|
|
|
|
cache_valid_time: 900
|
|
|
|
|
state: present
|
|
|
|
|
|
|
|
|
|
- name: Setup prometheus-postgres-exporter interface bind
|
|
|
|
|
lineinfile:
|
|
|
|
|
path: /etc/default/prometheus-postgres-exporter
|
|
|
|
|
regex: "^ARGS="
|
|
|
|
|
line: "ARGS=\"--web.listen-address='{{ stage_private_server_ip }}:{{ monitor_port_postgres }}'\""
|
|
|
|
|
|
|
|
|
|
- name: "Set DATA_SOURCE_NAME in /etc/default/prometheus-postgres-exporter"
|
|
|
|
|
- name: "Ensure config for prometheus-postgres-exporter via evil lineinfile..."
|
|
|
|
|
lineinfile:
|
|
|
|
|
state: present
|
|
|
|
|
regex: "^DATA_SOURCE_URI"
|
|
|
|
|
line: "DATA_SOURCE_URI='postgres@:5432/postgres?host=/var/run/postgresql'"
|
|
|
|
|
path: /etc/default/prometheus-postgres-exporter
|
|
|
|
|
|
|
|
|
|
- name: "Set PG_EXPORTER_AUTO_DISCOVER_DATABASES in /etc/default/prometheus-postgres-exporter"
|
|
|
|
|
lineinfile:
|
|
|
|
|
state: present
|
|
|
|
|
regex: "^PG_EXPORTER_AUTO_DISCOVER_DATABASES"
|
|
|
|
|
line: "PG_EXPORTER_AUTO_DISCOVER_DATABASES=true"
|
|
|
|
|
path: /etc/default/prometheus-postgres-exporter
|
|
|
|
|
|
|
|
|
|
- name: "Set PG_EXPORTER_EXTEND_QUERY_PATH in /etc/default/prometheus-postgres-exporter"
|
|
|
|
|
lineinfile:
|
|
|
|
|
state: present
|
|
|
|
|
regex: "^PG_EXPORTER_EXTEND_QUERY_PATH"
|
|
|
|
|
line: "PG_EXPORTER_EXTEND_QUERY_PATH=/metrics/queries.yaml"
|
|
|
|
|
regex: "{{ item.regex }}"
|
|
|
|
|
line: "{{ item.line }}"
|
|
|
|
|
path: /etc/default/prometheus-postgres-exporter
|
|
|
|
|
loop: '{{ prometheus_postgres_exporter_config }}'
|
|
|
|
|
notify: restart prometheus-postgres-exporter
|
|
|
|
|
|
|
|
|
|
- name: "Ensure /metrics directory exists"
|
|
|
|
|
file:
|
|
|
|
|
@ -142,17 +135,6 @@
|
|
|
|
|
file: path="/tmp/prometheus_postgres_exporter.sql" state=absent
|
|
|
|
|
when: "role_check.stdout == '0' and server_type == 'master'"
|
|
|
|
|
|
|
|
|
|
- name: "Restarting postgres if necessary" # noqa no-handler
|
|
|
|
|
service:
|
|
|
|
|
name: postgresql
|
|
|
|
|
state: restarted
|
|
|
|
|
when: listen_addresses.changed or max_connections.changed or shared_buffers.changed
|
|
|
|
|
|
|
|
|
|
- name: "Restart prometheus postgres exporter .."
|
|
|
|
|
service:
|
|
|
|
|
name: prometheus-postgres-exporter
|
|
|
|
|
state: restarted
|
|
|
|
|
|
|
|
|
|
- name: "Block: gpg stuff"
|
|
|
|
|
become: yes
|
|
|
|
|
become_user: postgres
|
|
|
|
|
|