Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
b345224
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
54719fb
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
d3480a7
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
ab6496c
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
5c4af61
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
2c3fa92
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
6fb7cfb
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
e4ff542
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
e680207
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
41b4c21
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
72dcb9e
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
ec8c61c
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
8713ba9
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
93a4348
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
8c47873
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
97f8984
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
4f99cc3
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
c9e463e
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
beae830
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
6476a51
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
c05dbd7
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
4d5903c
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
a6ea941
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
1b774c0
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
c5acc97
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
c5e6cde
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
7bd6672
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
00cb398
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
f47baa9
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
b995ea7
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
b56bc0b
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
a8f6228
PMM-7: Change pmm client setup
peterSirotnak Oct 14, 2025
df8cfdf
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
1c3328b
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
8efe92b
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
8d895a6
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
f5aa8de
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
fd36112
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
867356d
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
6829d9c
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
f7cd209
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
7ef0355
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
f8c0378
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
57d8a31
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
9989b69
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
594db72
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
5b911e1
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
efb748d
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
d0b4bbf
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
fedb250
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
8046928
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
caf6d95
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
38b3332
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
131f78f
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
ed20c07
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
fcef81b
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
377f214
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
9a4ecf0
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
9e3fae4
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
a745425
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
57121e7
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
7d3a861
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
abd358a
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
297db34
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
1fe7c4b
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
acdea90
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
e149de1
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
acfba98
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
ca41953
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
c298b4a
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
d068c8a
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
0597a51
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
434f3ae
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
bc91b22
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
61aaaa7
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
893576b
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
2268e10
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
ec0185c
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
ed4998b
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
02c42b0
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
feabfe9
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
905abff
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
ca004b9
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
e9964f1
PMM-7: Change pmm client setup
peterSirotnak Oct 15, 2025
d30c1ca
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
60179f8
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
d5e0414
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
6c82097
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
7e33dae
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
0a6296d
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
b9d5860
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
34238ec
PMM-7: Change pmm client setup
peterSirotnak Oct 16, 2025
ba8881c
PMM-7: Change pmm client setup
peterSirotnak Oct 17, 2025
17993f0
PMM-7: Change pmm client setup
peterSirotnak Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions .github/workflows/PMM_PSMDB_PBM_FULL.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ on:
jobs:
test_replica_set:
runs-on: ubuntu-22.04
timeout-minutes: 20
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
Expand All @@ -42,7 +42,7 @@ jobs:

test_sharded_cluster:
runs-on: ubuntu-22.04
timeout-minutes: 20
timeout-minutes: 40
strategy:
fail-fast: false
matrix:
Expand All @@ -52,6 +52,12 @@ jobs:
PMM_IMAGE: ${{ inputs.pmm_image || 'perconalab/pmm-server:3-dev-latest' }}
steps:
- uses: actions/checkout@v2
- name: Cleanup disk space on a worker according to https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
run: |
sudo rm -rf /usr/share/dotnet
sudo rm -rf /opt/ghc
sudo rm -rf "/usr/local/share/boost"
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
- name: Test sharded with PSMDB ${{ matrix.psmdb }}
run: |
PSMDB_VERSION=${{ matrix.psmdb }} ./start-sharded.sh
Expand Down
24 changes: 3 additions & 21 deletions pmm_psmdb-pbm_setup/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@ VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

ARG OL_VERSION
RUN set -ex; \
export GNUPGHOME="$(mktemp -d)"; \
RUN export GNUPGHOME="$(mktemp -d)"; \
export PERCONA_TELEMETRY_URL="https://check-dev.percona.com/v1/telemetry/GenericReport"; \
dnf install -y gnupg2; \
if [ $PSMDB_VERSION != "latest" ]; then export PSMDB_REPO="$(echo "${PSMDB_VERSION}" | awk -F '.' '{print "psmdb-"$1$2}')" ; else export PSMDB_REPO=psmdb-80 ; fi ; \
Expand Down Expand Up @@ -58,25 +57,8 @@ RUN set -ex; \
fi

ARG OL_VERSION
RUN if [[ "$PMM_CLIENT_VERSION" == http* ]]; then \
dnf -y install pmm-client && \
curl -Lf -o /tmp/pmm-client.tar.gz $PMM_CLIENT_VERSION && \
cd /tmp && tar -xvf pmm-client.tar.gz --transform 's,^/*[^/]*,/pmm-client,S' && \
cd /tmp/pmm-client && ./install_tarball && cd ../ && rm -rf pmm* ;\
elif [[ "$PMM_CLIENT_VERSION" =~ 3-dev-latest|latest ]]; then \
dnf -y install pmm-client ; \
elif [[ "$PMM_CLIENT_VERSION" = "pmm3-rc" ]]; then \
percona-release enable pmm3-client testing && \
dnf update --refresh -y && \
dnf -y install pmm-client ; \
else \
if [[ "$PMM_CLIENT_VERSION" =~ ^([3-9])\.([1-9][0-9]*)\.([0-9]+)$ ]]; then \
dnf -y install pmm-client-${PMM_CLIENT_VERSION}-7.el${OL_VERSION} ; \
else \
dnf -y install pmm-client-${PMM_CLIENT_VERSION}-6.el${OL_VERSION} ; \
fi \
fi && \
sed 's/Type=forking/#Type=forking/' -i /usr/lib/systemd/system/mongod.service && \

RUN sed 's/Type=forking/#Type=forking/' -i /usr/lib/systemd/system/mongod.service && \
systemctl enable mongod && \
systemctl enable pbm-agent && \
sed -i '/ExecStart/a StandardError=file:/var/log/pmm-agent.log' /usr/lib/systemd/system/pmm-agent.service && \
Expand Down
37 changes: 34 additions & 3 deletions pmm_psmdb-pbm_setup/configure-agents.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash
set -e

pmm_mongo_user=${PMM_MONGO_USER:-pmm}
pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass}
Expand Down Expand Up @@ -44,12 +43,40 @@ if [[ $mongo_setup_type == "psa" ]]; then
fi
echo
echo "configuring pmm agents"
PLAYBOOK_FILE="install_pmm_client.yml"
cat > "$PLAYBOOK_FILE" <<EOF
- hosts: localhost
connection: local
tasks:
- include_tasks: ../pmm_qa/tasks/install_pmm_client.yml
EOF

if [ -z "${PMM_SERVER_IP+x}" ]; then
PMM_SERVER_IP="pmm-server"
fi

if [ -z "${ADMIN_PASSWORD+x}" ]; then
ADMIN_PASSWORD=$pmm_server_admin_pass
fi


random_number=$RANDOM
nodes="rs101 rs102 rs103"
for node in $nodes
do
echo "configuring pmm agent on $node"
docker compose -f docker-compose-rs.yaml exec -T -e PMM_AGENT_SETUP_NODE_NAME=${node}._${random_number} $node pmm-agent setup
echo "Configuring PMM Client on: $node"
echo "PMM Server IP is: $PMM_SERVER_IP"
echo "PMM Client version is: $PMM_CLIENT_VERSION"
echo "Admin Password is: $ADMIN_PASSWORD"
ansible_out=$(ansible-playbook install_pmm_client.yml -vvv --connection=local --inventory 127.0.0.1, --limit 127.0.0.1 -e "container_name=$node pmm_server_ip=$PMM_SERVER_IP client_version=$PMM_CLIENT_VERSION admin_password=$ADMIN_PASSWORD" 2>&1)

if [ $? -ne 0 ]; then
echo "Ansible failed for: $node"
echo "$ansible_out"
exit 1
fi


if [[ $mongo_setup_type == "psa" && $node == "rs103" ]]; then
docker compose -f docker-compose-rs.yaml exec -T $node pmm-admin add mongodb --enable-all-collectors --agent-password=mypass --environment=psmdb-dev --cluster=replicaset --replication-set=rs --host=${node} --port=27017 ${node}${gssapi_service_name_part}_${random_number}
else
Expand All @@ -59,6 +86,10 @@ do
done
echo
echo "adding some data"
docker exec rs101 wget -O mgodatagen_linux_amd64.tar.gz https://github.com/feliixx/mgodatagen/releases/download/v0.12.0/mgodatagen_0.12.0_darwin_amd64.tar.gz
docker exec rs101 tar -xzf mgodatagen_linux_amd64.tar.gz
docker exec rs101 mv mgodatagen /usr/local/bin/
docker exec rs101 chmod +x /usr/local/bin/mgodatagen
docker compose -f docker-compose-rs.yaml exec -T rs101 mgodatagen -f /etc/datagen/replicaset.json --uri=mongodb://${pmm_mongo_user}:${pmm_mongo_user_pass}@127.0.0.1:27017/?replicaSet=rs
docker compose -f docker-compose-rs.yaml exec -T rs101 mongo "mongodb://${pmm_mongo_user}:${pmm_mongo_user_pass}@localhost/?replicaSet=rs" --quiet << EOF
use students;
Expand Down
21 changes: 18 additions & 3 deletions pmm_psmdb-pbm_setup/configure-extra-agents.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash
set -e

pmm_mongo_user=${PMM_MONGO_USER:-pmm}
pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass}
Expand Down Expand Up @@ -44,10 +43,26 @@ echo
echo "configuring pmm agents"
random_number=$RANDOM
nodes="rs201 rs202 rs203"
PLAYBOOK_FILE="install_pmm_client.yml"

cat > "$PLAYBOOK_FILE" <<EOF
- hosts: localhost
connection: local
tasks:
- include_tasks: ../pmm_qa/tasks/install_pmm_client.yml
EOF

for node in $nodes
do
echo "configuring pmm agent on $node"
docker compose -f docker-compose-rs.yaml exec -T -e PMM_AGENT_SETUP_NODE_NAME=${node}._${random_number} $node pmm-agent setup
echo "Configuring PMM Client on $node"
ansible_out=$(ansible-playbook install_pmm_client.yml -i localhost, --connection=local -e "container_name=$node pmm_server_ip=$PMM_SERVER_IP client_version=$PMM_CLIENT_VERSION admin_password=$ADMIN_PASSWORD" 2>&1)

if [ $? -ne 0 ]; then
echo "Ansible failed for: $node"
echo "$ansible_out"
exit 1
fi

if [[ $mongo_setup_type == "psa" && $node == "rs203" ]]; then
docker compose -f docker-compose-rs.yaml exec -T $node pmm-admin add mongodb --enable-all-collectors --agent-password=mypass --cluster=replicaset --replication-set=rs1 --host=${node} --port=27017 ${node}${gssapi_service_name_part}_${random_number}
else
Expand Down
2 changes: 1 addition & 1 deletion pmm_psmdb-pbm_setup/configure-replset.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -e
#set -e

pmm_mongo_user=${PMM_MONGO_USER:-pmm}
pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass}
Expand Down
30 changes: 29 additions & 1 deletion pmm_psmdb-pbm_setup/start-rs-only.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
set -e
#set -e

profile=${COMPOSE_PROFILES:-classic}
mongo_setup_type=${MONGO_SETUP_TYPE:-pss}
Expand All @@ -22,6 +22,34 @@ echo
echo "waiting 60 seconds for replica set members to start"
sleep 60
echo

docker ps --format "{{.Names}}" | grep '^rs'
PLAYBOOK_FILE="install_pmm_client.yml"
cat > "$PLAYBOOK_FILE" <<EOF
- hosts: localhost
connection: local
tasks:
- include_tasks: ../pmm_qa/tasks/install_pmm_client.yml
EOF

if [ -z "${PMM_SERVER_IP+x}" ]; then
PMM_SERVER_IP="pmm-server"
fi

if [ -z "${ADMIN_PASSWORD+x}" ]; then
ADMIN_PASSWORD="admin"
fi

for c in $(docker ps --format "{{.Names}}" | grep '^rs'); do
echo "Container: $c"
ansible_out=$(ansible-playbook install_pmm_client.yml -i localhost, --connection=local -e "container_name=$c pmm_server_ip=$PMM_SERVER_IP client_version=$PMM_CLIENT_VERSION admin_password=$ADMIN_PASSWORD" 2>&1)
if [ $? -ne 0 ]; then
echo "Ansible failed for: $c"
echo "$ansible_out"
exit 1
fi
done

if [ $mongo_setup_type == "pss" ]; then
bash -e ./configure-replset.sh
else
Expand Down
1 change: 0 additions & 1 deletion pmm_psmdb-pbm_setup/start-rs.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash
set -e

pmm_server_admin_pass=${ADMIN_PASSWORD:-password}
profile=${COMPOSE_PROFILES:-classic}
Expand Down
52 changes: 44 additions & 8 deletions pmm_psmdb-pbm_setup/start-sharded.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/bin/bash
set -ex
pmm_user=${PMM_USER:-pmm}
pmm_pass=${PMM_PASS:-pmmpass}
pbm_user=${PBM_USER:-pbm}
Expand Down Expand Up @@ -46,6 +45,8 @@ do
};
rs.initiate(config);
EOF


sleep 60
echo
echo "configuring root user on primary $node replicaset $rs"
Expand Down Expand Up @@ -228,22 +229,56 @@ do
echo "restarting pbm agent on $node"
docker compose -f docker-compose-sharded.yaml exec -T $node systemctl restart pbm-agent
done
echo
echo "configuring pmm agents"

echo "Install and setup PMM Client"

PLAYBOOK_FILE="install_pmm_client.yml"
cat > "$PLAYBOOK_FILE" <<EOF
- hosts: localhost
connection: local
tasks:
- include_tasks: ../pmm_qa/tasks/install_pmm_client.yml
EOF

if [ -z "${PMM_SERVER_IP+x}" ]; then
PMM_SERVER_IP="pmm-server"
fi

random_number=$RANDOM
nodes="rs101 rs102 rs103 rs201 rs202 rs203 rscfg01 rscfg02 rscfg03"

if [ -z "${PMM_SERVER_IP+x}" ]; then
PMM_SERVER_IP="pmm-server"
fi

if [ -z "${ADMIN_PASSWORD+x}" ]; then
ADMIN_PASSWORD="password"
fi

for node in $nodes
do
echo "congiguring pmm agent on $node"
rs=$(echo $node | awk -F "0" '{print $1}')
docker compose -f docker-compose-sharded.yaml exec -T -e PMM_AGENT_SETUP_NODE_NAME=${node}_${random_number} $node pmm-agent setup
docker compose -f docker-compose-sharded.yaml exec -T $node pmm-admin add mongodb --agent-password=mypass --cluster=sharded --environment=mongo-sharded-dev --username=${pmm_user} --password=${pmm_pass} ${node}_${random_number} 127.0.0.1:27017
echo "Configuring PMM Client on $node"
ansible_out=$(ansible-playbook install_pmm_client.yml -i localhost, --connection=local -e "container_name=$node pmm_server_ip=$PMM_SERVER_IP client_version=$PMM_CLIENT_VERSION admin_password=$ADMIN_PASSWORD" 2>&1)

if [ $? -ne 0 ]; then
echo "Ansible failed for: $node"
echo "$ansible_out"
exit 1
fi

docker exec $node pmm-admin add mongodb --agent-password=mypass --cluster=sharded --environment=mongo-sharded-dev --username=${pmm_user} --password=${pmm_pass} ${node}_${random_number} 127.0.0.1:27017
done
echo "configuring pmm-agent on primary rscfg01 for mongos instance"
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 pmm-admin add mongodb --agent-password=mypass --cluster=sharded --environment=mongo-sharded-dev --username=${pmm_user} --password=${pmm_pass} mongos_${random_number} mongos:27017

echo "adding some data"
docker compose -f docker-compose-sharded.yaml exec -T mongos mgodatagen -f /etc/datagen/sharded.json --uri=mongodb://root:[email protected]:27017
docker exec mongos yum install -y wget
docker exec mongos wget -O mgodatagen_linux_amd64.tar.gz https://github.com/feliixx/mgodatagen/releases/download/v0.12.0/mgodatagen_0.12.0_darwin_amd64.tar.gz
docker exec mongos tar -xzf mgodatagen_linux_amd64.tar.gz
docker exec mongos mv mgodatagen /usr/local/bin/
docker exec mongos chmod +x /usr/local/bin/mgodatagen
docker exec mongos mgodatagen -f /etc/datagen/sharded.json --uri=mongodb://root:[email protected]:27017

tests=${TESTS:-yes}
if [ $tests != "no" ]; then
echo "running tests"
Expand All @@ -252,6 +287,7 @@ if [ $tests != "no" ]; then
else
echo "skipping tests"
fi

cleanup=${CLEANUP:-yes}
if [ $cleanup != "no" ]; then
echo "cleanup"
Expand Down
57 changes: 37 additions & 20 deletions pmm_psmdb_diffauth_setup/test-auth.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
# TESTS - whether to run tests, by default - yes
# CLEANUP - whether to remove setup, by default - yes

set -e
#set -e

# PSMDB 4.2 doesn't support AWS auth
if [[ -n "$PSMDB_VERSION" ]] && [[ "$PSMDB_VERSION" == *"4.2."* ]]; then
Expand All @@ -25,41 +25,58 @@ fi

bash -e ./generate-certs.sh

#Start setup
echo "Start setup"
docker compose -f docker-compose-pmm-psmdb.yml down -v --remove-orphans
docker compose -f docker-compose-pmm-psmdb.yml build
docker compose -f docker-compose-pmm-psmdb.yml up -d

#Add users
echo "Add users"
docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server mongo --quiet << EOF
db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] });
EOF
docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server mongo --quiet "mongodb://root:root@localhost/?replicaSet=rs0" < init/setup_psmdb.js

#Configure PBM
echo "Configure PBM"
docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server bash -c "echo \"PBM_MONGODB_URI=mongodb://pbm:[email protected]:27017\" > /etc/sysconfig/pbm-agent"
docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server systemctl restart pbm-agent

#Configure PMM
set +e
i=1
while [ $i -le 3 ]; do
output=$(docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server pmm-agent setup --config-file=/usr/local/percona/pmm/config/pmm-agent.yaml --server-address=pmm-server:8443 --metrics-mode=auto --server-username=admin --server-password=${ADMIN_PASSWORD} --server-insecure-tls)
exit_code=$?
echo "Install PMM Client"

if [ $exit_code -ne 0 ] && [[ $output == *"500 Internal Server Error"* ]]; then
i=$((i + 1))
else
break
fi
sleep 1
done
docker ps -a

PLAYBOOK_FILE="install_pmm_client.yml"
cat > "$PLAYBOOK_FILE" <<EOF
- hosts: localhost
connection: local
tasks:
- include_tasks: ../pmm_qa/tasks/install_pmm_client.yml
EOF

if [ -z "${PMM_SERVER_IP+x}" ]; then
PMM_SERVER_IP="pmm-server"
fi

#Add Mongo Service
echo "PMM Server IP is: $PMM_SERVER_IP"
echo "PMM Client version is: $PMM_CLIENT_VERSION"
echo "Admin Password is: $ADMIN_PASSWORD"
ansible_out=$(ansible-playbook install_pmm_client.yml -vvv --connection=local --inventory 127.0.0.1, --limit 127.0.0.1 -e "container_name=psmdb-server pmm_server_ip=$PMM_SERVER_IP client_version=$PMM_CLIENT_VERSION admin_password=$ADMIN_PASSWORD" 2>&1)

if [ $? -ne 0 ]; then
echo "Ansible failed for: psmdb-server"
echo "$ansible_out"
exit 1
fi

echo "Add Mongo Service"
random_number=$RANDOM
docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server pmm-admin add mongodb psmdb-server_${random_number} --agent-password=mypass --username=pmm_mongodb --password="5M](Q%q/U+YQ<^m" --host psmdb-server --port 27017 --tls --tls-certificate-key-file=/mongodb_certs/client.pem --tls-ca-file=/mongodb_certs/ca-certs.pem --cluster=mycluster
#Add some data
docker compose -f docker-compose-pmm-psmdb.yml exec -T psmdb-server mgodatagen -f /etc/datagen/replicaset.json --username=pmm_mongodb --password="5M](Q%q/U+YQ<^m" --host psmdb-server --port 27017 --tlsCertificateKeyFile=/mongodb_certs/client.pem --tlsCAFile=/mongodb_certs/ca-certs.pem

echo "Add some data"
docker exec psmdb-server wget -O mgodatagen_linux_amd64.tar.gz https://github.com/feliixx/mgodatagen/releases/download/v0.12.0/mgodatagen_0.12.0_darwin_amd64.tar.gz
docker exec psmdb-server tar -xzf mgodatagen_linux_amd64.tar.gz
docker exec psmdb-server mv mgodatagen /usr/local/bin/
docker exec psmdb-server chmod +x /usr/local/bin/mgodatagen
docker exec psmdb-server mgodatagen -f /etc/datagen/replicaset.json --username=pmm_mongodb --password="5M](Q%q/U+YQ<^m" --host psmdb-server --port 27017 --tlsCertificateKeyFile=/mongodb_certs/client.pem --tlsCAFile=/mongodb_certs/ca-certs.pem

tests=${TESTS:-yes}
if [ $tests = "yes" ]; then
Expand Down
3 changes: 2 additions & 1 deletion pmm_qa/percona_server/data/my.cnf.j2
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
[mysqld]
userstat=1
userstat=1
innodb_buffer_pool_size=256M
Loading
Loading