|
1 | 1 | --- |
2 | 2 | - name: Configure PostgreSQL for PMM |
3 | | - hosts: all |
| 3 | + hosts: postgresql-servers |
4 | 4 | become: yes |
5 | 5 | vars_files: |
6 | 6 | - vars.yml |
7 | 7 |
|
8 | 8 | 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 |
10 | 62 | - name: Create PMM user in PostgreSQL |
11 | 63 | community.postgresql.postgresql_user: |
12 | 64 | name: "{{ pmm_postgresql_user }}" |
13 | 65 | password: "{{ pmm_postgresql_password }}" |
14 | 66 | encrypted: yes |
15 | | - priv: "SUPERUSER" |
| 67 | + role_attr_flags: "SUPERUSER" |
16 | 68 | state: present |
17 | 69 | login_user: "{{ postgresql_admin_user }}" |
18 | 70 | login_password: "{{ postgresql_admin_password }}" |
19 | 71 | db: postgres |
20 | 72 | port: 5432 |
21 | 73 | become_user: postgres |
22 | 74 |
|
23 | | - # Update pg_hba.conf for PMM user |
| 75 | + # Allow PMM user in pg_hba.conf |
24 | 76 | - name: Allow PMM user in pg_hba.conf |
25 | 77 | ansible.builtin.lineinfile: |
26 | 78 | path: "{{ pg_hba_conf_path }}" |
27 | 79 | line: "local all {{ pmm_postgresql_user }} md5" |
28 | 80 | state: present |
29 | 81 | notify: Reload PostgreSQL |
30 | 82 |
|
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 |
33 | 85 | ansible.builtin.lineinfile: |
34 | 86 | path: "{{ postgresql_conf_path }}" |
35 | 87 | regexp: "^#?shared_preload_libraries\\s*=\\s*.*" |
36 | 88 | line: "shared_preload_libraries = '{{ ','.join(pg_extensions) }}'" |
37 | 89 | state: present |
38 | 90 | notify: Reload PostgreSQL |
39 | 91 |
|
40 | | - # Install extensions |
| 92 | + # Install PostgreSQL extensions |
41 | 93 | - name: Install PostgreSQL extensions |
42 | 94 | ansible.builtin.shell: "psql -U {{ postgresql_admin_user }} -d postgres -c 'CREATE EXTENSION IF NOT EXISTS {{ item }};'" |
43 | 95 | with_items: "{{ pg_extensions }}" |
44 | 96 | become_user: postgres |
45 | 97 |
|
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 |
48 | 100 | 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" |
50 | 102 | register: pmm_config_output |
51 | 103 | changed_when: false |
52 | 104 |
|
53 | 105 | # Add PostgreSQL service to PMM |
54 | | - - name: Add PostgreSQL service to PMM |
| 106 | + - name: Add PostgreSQL to PMM |
55 | 107 | ansible.builtin.command: |
56 | 108 | cmd: "pmm-admin add postgresql --username={{ pmm_postgresql_user }} --password={{ pmm_postgresql_password }} --service-name={{ inventory_hostname }}-postgresql --host={{ ansible_host }} --port=5432" |
57 | 109 | register: pmm_add_service_output |
|
0 commit comments