Skip to content

Commit cb6f38b

Browse files
committed
updated
1 parent f5ee9e2 commit cb6f38b

File tree

2 files changed

+76
-14
lines changed

2 files changed

+76
-14
lines changed

Ansible/percona-pmm/pmm_postgresql.yml

Lines changed: 63 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,109 @@
11
---
22
- name: Configure PostgreSQL for PMM
3-
hosts: all
3+
hosts: postgresql-servers
44
become: yes
55
vars_files:
66
- vars.yml
77

88
tasks:
9-
# Ensure PMM user is created
9+
# Add Percona repository on Debian/Ubuntu
10+
- name: Add Percona repository on Debian/Ubuntu
11+
block:
12+
- name: Install curl if not already installed
13+
ansible.builtin.package:
14+
name: curl
15+
state: present
16+
17+
- name: Download Percona repository package
18+
ansible.builtin.get_url:
19+
url: "{{ percona_deb_repo_url }}"
20+
dest: "/tmp/percona-release_latest.generic_all.deb"
21+
22+
- name: Install Percona repository package
23+
ansible.builtin.shell: |
24+
apt install -y gnupg2 lsb-release /tmp/percona-release_latest.generic_all.deb
25+
args:
26+
executable: /bin/bash
27+
28+
- name: Refresh the local cache
29+
ansible.builtin.apt:
30+
update_cache: yes
31+
32+
- name: Setup Percona repository for PostgreSQL
33+
ansible.builtin.shell: |
34+
percona-release setup ppg{{ postgresql_version }}
35+
args:
36+
executable: /bin/bash
37+
when: ansible_os_family == "Debian"
38+
39+
# Add Percona repository on RedHat/CentOS
40+
- name: Add Percona repository on RedHat/CentOS
41+
block:
42+
- name: Install Percona repository package
43+
ansible.builtin.shell: |
44+
yum install -y {{ percona_rpm_repo_url }}
45+
args:
46+
executable: /bin/bash
47+
48+
- name: Setup Percona repository for PostgreSQL
49+
ansible.builtin.shell: |
50+
percona-release setup ppg{{ postgresql_version }}
51+
args:
52+
executable: /bin/bash
53+
when: ansible_os_family == "RedHat"
54+
55+
# Install pg_stat_monitor package
56+
- name: Install pg_stat_monitor package
57+
ansible.builtin.package:
58+
name: "percona-pg-stat-monitor{{ postgresql_version }}"
59+
state: present
60+
61+
# Create PMM user with SUPERUSER role
1062
- name: Create PMM user in PostgreSQL
1163
community.postgresql.postgresql_user:
1264
name: "{{ pmm_postgresql_user }}"
1365
password: "{{ pmm_postgresql_password }}"
1466
encrypted: yes
15-
priv: "SUPERUSER"
67+
role_attr_flags: "SUPERUSER"
1668
state: present
1769
login_user: "{{ postgresql_admin_user }}"
1870
login_password: "{{ postgresql_admin_password }}"
1971
db: postgres
2072
port: 5432
2173
become_user: postgres
2274

23-
# Update pg_hba.conf for PMM user
75+
# Allow PMM user in pg_hba.conf
2476
- name: Allow PMM user in pg_hba.conf
2577
ansible.builtin.lineinfile:
2678
path: "{{ pg_hba_conf_path }}"
2779
line: "local all {{ pmm_postgresql_user }} md5"
2880
state: present
2981
notify: Reload PostgreSQL
3082

31-
# Update postgresql.conf for extensions
32-
- name: Configure shared_preload_libraries in postgresql.conf
83+
# Configure shared_preload_libraries in postgresql.conf
84+
- name: Configure shared_preload_libraries
3385
ansible.builtin.lineinfile:
3486
path: "{{ postgresql_conf_path }}"
3587
regexp: "^#?shared_preload_libraries\\s*=\\s*.*"
3688
line: "shared_preload_libraries = '{{ ','.join(pg_extensions) }}'"
3789
state: present
3890
notify: Reload PostgreSQL
3991

40-
# Install extensions
92+
# Install PostgreSQL extensions
4193
- name: Install PostgreSQL extensions
4294
ansible.builtin.shell: "psql -U {{ postgresql_admin_user }} -d postgres -c 'CREATE EXTENSION IF NOT EXISTS {{ item }};'"
4395
with_items: "{{ pg_extensions }}"
4496
become_user: postgres
4597

46-
# Register PMM Client
47-
- name: Configure PMM Client to connect to PMM Server
98+
# Configure PMM Client to connect to PMM Server
99+
- name: Register PMM Client with PMM Server
48100
ansible.builtin.command:
49-
cmd: "pmm-admin config --server-insecure-tls --server-url=https://{{ pmm_server_username }}:{{ admin_password }}@{{ pmm_server_address }} {{ inventory_hostname }}"
101+
cmd: "pmm-admin config --server-insecure-tls --server-url=https://{{ pmm_server_username }}:{{ admin_password }}@{{ pmm_server_address }} {{ inventory_hostname }} --force"
50102
register: pmm_config_output
51103
changed_when: false
52104

53105
# Add PostgreSQL service to PMM
54-
- name: Add PostgreSQL service to PMM
106+
- name: Add PostgreSQL to PMM
55107
ansible.builtin.command:
56108
cmd: "pmm-admin add postgresql --username={{ pmm_postgresql_user }} --password={{ pmm_postgresql_password }} --service-name={{ inventory_hostname }}-postgresql --host={{ ansible_host }} --port=5432"
57109
register: pmm_add_service_output

Ansible/percona-pmm/vars.yml

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,19 @@ pmm_postgresql_user: "pmm"
2525
pmm_postgresql_password: "lwqotq"
2626

2727
# PostgreSQL configuration paths
28-
postgresql_conf_path: "/etc/postgresql/{{ postgresql_version }}/main/postgresql.conf"
29-
pg_hba_conf_path: "/etc/postgresql/{{ postgresql_version }}/main/pg_hba.conf"
30-
postgresql_service_name: "postgresql"
28+
postgresql_conf_path_debian: "/etc/postgresql/{{ postgresql_version }}/main/postgresql.conf"
29+
pg_hba_conf_path_debian: "/etc/postgresql/{{ postgresql_version }}/main/pg_hba.conf"
30+
postgresql_service_name_debian: "postgresql"
31+
32+
# CentOS/RedHat
33+
postgresql_conf_path_redhat: "/etc/postgresql/{{ postgresql_version }}/data/postgresql.conf"
34+
pg_hba_conf_path_redhat: "/etc/postgresql/{{ postgresql_version }}/data/pg_hba.conf"
35+
postgresql_service_name_redhat: "postgresql-{{ postgresql_version }}"
36+
37+
# Path selection logic based on OS family
38+
postgresql_conf_path: "{{ postgresql_conf_path_debian if ansible_os_family == 'Debian' else postgresql_conf_path_redhat }}"
39+
pg_hba_conf_path: "{{ pg_hba_conf_path_debian if ansible_os_family == 'Debian' else pg_hba_conf_path_redhat }}"
40+
postgresql_service_name: "{{ postgresql_service_name_debian if ansible_os_family == 'Debian' else postgresql_service_name_redhat }}"
3141

3242
# Extensions to install
3343
pg_extensions:

0 commit comments

Comments
 (0)