-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathpdpgsql_pgsm_setup.yml
More file actions
85 lines (73 loc) · 5.13 KB
/
pdpgsql_pgsm_setup.yml
File metadata and controls
85 lines (73 loc) · 5.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
---
# This playbook does following:
# enables Percona testing repository
- hosts: all
become: true
become_method: sudo
vars:
pdpgsql_version: "{{ lookup('vars', 'extra_pdpgsql_version', default=lookup('env','PDPGSQL_VERSION') | default('15', true) ) }}"
pdpgsql_pgsm_container: "{{ lookup('vars', 'extra_pdpgsql_pgsm_container', default=lookup('env','PDPGSQL_PGSM_CONTAINER') | default('pdpgsql_pgsm', true) ) }}"
pmm_server_ip: "{{ lookup('vars', 'extra_pmm_server_ip', default=lookup('env','PMM_SERVER_IP') | default('127.0.0.1', true) ) }}"
client_version: "{{ lookup('vars', 'extra_client_version', default=lookup('env','CLIENT_VERSION') | default('3-dev-latest', true) ) }}"
admin_password: "{{ lookup('vars', 'extra_admin_password', default=lookup('env','ADMIN_PASSWORD') | default('admin', true) ) }}"
pmm_qa_branch: "{{ lookup('vars', 'extra_pmm_qa_branch', default=lookup('env','PMM_QA_GIT_BRANCH') | default('main', true) ) }}"
pgstat_monitor_branch: "{{ lookup('vars', 'extra_pgstat_monitor_branch', default=lookup('env','PGSTAT_MONITOR_BRANCH') | default('2.1.0', true) ) }}"
pgstat_monitor_repo: "{{ lookup('vars', 'extra_pgstat_monitor_repo', default=lookup('env','PGSTAT_MONITOR_REPO') | default('percona/pg_stat_monitor', true) ) }}"
use_socket: "{{ lookup('vars', 'extra_pdpgsql_version', default=lookup('env','USE_SOCKET') | default('', true) ) }}"
pdpgsql_pgsm_port: "{{ lookup('vars', 'extra_pdpgsql_port', default=lookup('env','PDPGSQL_PGSM_PORT') | default(5447, true) ) }}"
distribution: "{{ lookup('vars', 'extra_pdpgsql_distribution', default=lookup('env','DISTRIBUTION') | default('PPG', true) ) }}"
ppg_repo_version: "{{ lookup('vars', 'extra_ppg_repo_version', default=lookup('env','PPG_REPO_VERSION') | default('', true) ) }}"
ppg_repo_type: "{{ lookup('vars', 'extra_ppg_repo_type', default=lookup('env','PPG_REPO_TYPE') | default('', true) ) }}"
tasks:
- name: cleanup container for client and DB setup
shell: >
docker ps -a --filter "name={{ pdpgsql_pgsm_container }}" | grep -q . && docker stop {{ pdpgsql_pgsm_container }} && docker rm -fv {{ pdpgsql_pgsm_container }}
ignore_errors: true
tags:
- cleanup
- name: Create pmm-qa network if not exist
shell: docker network create pmm-qa
ignore_errors: true
- name: Prepare Container for PostgreSQL
shell: >
sudo docker run -d --name={{ pdpgsql_pgsm_container }}
-p {{ pdpgsql_pgsm_port }}:5432
phusion/baseimage:jammy-1.0.1
- name: Copy all required Artifacts to the docker pdpgsql_pgsm_container
shell: "{{ item }}"
with_items:
- docker exec {{ pdpgsql_pgsm_container }} mkdir -p artifacts
- docker cp ./pg_stat_monitor_setup.sh {{ pdpgsql_pgsm_container }}:/
- docker cp ./pgsm_run_queries.sh {{ pdpgsql_pgsm_container }}:/
- docker cp ./pmm3-client-setup.sh {{ pdpgsql_pgsm_container }}:/
- name: Execute Setup script inside the pdpgsql pdpgsql_pgsm_container
shell: "{{ item }}"
with_items:
- docker exec {{ pdpgsql_pgsm_container }} bash -xe ./pg_stat_monitor_setup.sh --distribution {{ distribution }} --pgsql_version {{ pdpgsql_version }} --pgstat_monitor_branch {{ pgstat_monitor_branch }} --pgstat_monitor_repo {{ pgstat_monitor_repo }} --ppg_repo_version {{ ppg_repo_version }} --ppg_repo_type {{ ppg_repo_type }} > setup_{{ pdpgsql_pgsm_container }}.log
- name: Install pmm2-client on the pdpgsql_pgsm_container
shell: "{{ item }}"
with_items:
- docker network connect pmm-qa {{ pdpgsql_pgsm_container }}
- docker exec {{ pdpgsql_pgsm_container }} bash -x ./pmm3-client-setup.sh --pmm_server_ip {{ pmm_server_ip }} --client_version {{ client_version }} --admin_password {{ admin_password }} --use_metrics_mode no
- name: Set Random Number Fact
set_fact:
random_number: "{{ (10000 | random) | int }}"
- name: Remove pdpgsql service if already added previously
shell: "{{ item }}"
with_items:
- docker exec {{ pdpgsql_pgsm_container }} bash -c 'source ~/.bash_profile || true; pmm-admin remove postgresql {{ pdpgsql_pgsm_container }}_service__{{ random_number }}'
ignore_errors: true
- name: Add pdpgsql_pgsm for monitoring
shell: "{{ item }}"
with_items:
- docker exec {{ pdpgsql_pgsm_container }} bash -c 'source ~/.bash_profile || true; pmm-admin list'
- docker exec {{ pdpgsql_pgsm_container }} bash -c 'source ~/.bash_profile || true; pmm-admin add postgresql --username=pmm --password=pmm --query-source=pgstatmonitor {{ pdpgsql_pgsm_container }}_service_{{ random_number }}'
- name: Add pdpgsql_pgsm for monitoring
shell: "{{ item }}"
with_items:
- docker exec {{ pdpgsql_pgsm_container }} bash -c 'source ~/.bash_profile || true; pmm-admin list'
- docker exec {{ pdpgsql_pgsm_container }} bash -c 'source ~/.bash_profile || true; pmm-admin add postgresql --username=pmm --password=pmm --query-source=pgstatmonitor --socket=/var/run/postgresql socket_{{ pdpgsql_pgsm_container }}_service_{{ random_number }}'
- name: Run queries for generating data
shell: "{{ item }}"
with_items:
- docker exec {{ pdpgsql_pgsm_container }} bash ./pgsm_run_queries.sh &