From d025989871b7e615641ae4a25bf7b57a6f7eea3b Mon Sep 17 00:00:00 2001 From: yurkovychv Date: Thu, 27 Jul 2023 17:18:15 +0300 Subject: [PATCH] PMM-12352 setup tweaks --- pmm_psmdb-pbm_setup/configure-extra-agents.sh | 28 +++++ .../configure-extra-replset.sh | 103 ++++++++++++++++++ pmm_psmdb-pbm_setup/docker-compose-rs.yaml | 88 +++++++++++++++ pmm_psmdb-pbm_setup/start-rs-only.sh | 10 ++ pmm_psmdb-pbm_setup/start-rs.sh | 4 + 5 files changed, 233 insertions(+) create mode 100644 pmm_psmdb-pbm_setup/configure-extra-agents.sh create mode 100644 pmm_psmdb-pbm_setup/configure-extra-replset.sh diff --git a/pmm_psmdb-pbm_setup/configure-extra-agents.sh b/pmm_psmdb-pbm_setup/configure-extra-agents.sh new file mode 100644 index 0000000..75019b1 --- /dev/null +++ b/pmm_psmdb-pbm_setup/configure-extra-agents.sh @@ -0,0 +1,28 @@ +#!/bin/bash +set -e + +pmm_mongo_user=${PMM_MONGO_USER:-pmm} +pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass} +pbm_user=${PBM_USER:-pbm} +pbm_pass=${PBM_PASS:-pbmpass} + +echo +echo "configuring pbm agents" +nodes="rs201 rs202 rs203" +for node in $nodes +do + echo "configuring pbm agent on $node" + docker-compose -f docker-compose-rs.yaml exec -T $node bash -c "echo \"PBM_MONGODB_URI=mongodb://${pbm_user}:${pbm_pass}@127.0.0.1:27017\" > /etc/sysconfig/pbm-agent" + echo "restarting pbm agent on $node" + docker-compose -f docker-compose-rs.yaml exec -T $node systemctl restart pbm-agent +done +echo +echo "configuring pmm agents" +nodes="rs201 rs202 rs203" +for node in $nodes +do + echo "configuring pmm agent on $node" + docker-compose -f docker-compose-rs.yaml exec -T $node pmm-agent setup + docker-compose -f docker-compose-rs.yaml exec -T $node pmm-admin add mongodb --cluster=replicaset1 --replication-set=rs1 --username=${pmm_mongo_user} --password=${pmm_mongo_user_pass} $node 127.0.0.1:27017 +done +echo diff --git a/pmm_psmdb-pbm_setup/configure-extra-replset.sh b/pmm_psmdb-pbm_setup/configure-extra-replset.sh new file mode 100644 index 0000000..cff511d --- /dev/null +++ b/pmm_psmdb-pbm_setup/configure-extra-replset.sh @@ -0,0 +1,103 @@ +#!/bin/bash +set -e + +pmm_mongo_user=${PMM_MONGO_USER:-pmm} +pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass} +pbm_user=${PBM_USER:-pbm} +pbm_pass=${PBM_PASS:-pbmpass} + +echo +echo "configuring replicaset with members priorities" +docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo --quiet << EOF + config = { + "_id" : "rs", + "members" : [ + { + "_id" : 0, + "host" : "rs201:27017", + "priority": 2 + }, + { + "_id" : 1, + "host" : "rs202:27017", + "priority": 1 + }, + { + "_id" : 2, + "host" : "rs203:27017", + "priority": 1 + } + ] + }; + rs.initiate(config); +EOF +echo +sleep 60 +echo +echo "configuring root user on primary" +docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo --quiet << EOF +db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] }); +EOF +echo +echo "configuring pbm and pmm roles" +docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF +db.getSiblingDB("admin").createRole({ + "role": "pbmAnyAction", + "privileges": [{ + "resource": { "anyResource": true }, + "actions": [ "anyAction" ] + }], + "roles": [] +}); +db.getSiblingDB("admin").createRole({ + role: "explainRole", + privileges: [{ + resource: { + db: "", + collection: "" + }, + actions: [ + "listIndexes", + "listCollections", + "dbStats", + "dbHash", + "collStats", + "find" + ] + }], + roles:[] +}); +EOF +echo +echo "creating pbm user" +docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF +db.getSiblingDB("admin").createUser({ + user: "${pbm_user}", + pwd: "${pbm_pass}", + "roles" : [ + { "db" : "admin", "role" : "readWrite", "collection": "" }, + { "db" : "admin", "role" : "backup" }, + { "db" : "admin", "role" : "clusterMonitor" }, + { "db" : "admin", "role" : "restore" }, + { "db" : "admin", "role" : "pbmAnyAction" } + ] +}); +EOF +echo +echo "creating pmm user" +docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF +db.getSiblingDB("admin").createUser({ + user: "${pmm_mongo_user}", + pwd: "${pmm_mongo_user_pass}", + roles: [ + { role: "explainRole", db: "admin" }, + { role: "clusterMonitor", db: "admin" }, + { role: "read", db: "local" }, + { "db" : "admin", "role" : "readWrite", "collection": "" }, + { "db" : "admin", "role" : "backup" }, + { "db" : "admin", "role" : "clusterMonitor" }, + { "db" : "admin", "role" : "restore" }, + { "db" : "admin", "role" : "pbmAnyAction" } + ] +}); +EOF diff --git a/pmm_psmdb-pbm_setup/docker-compose-rs.yaml b/pmm_psmdb-pbm_setup/docker-compose-rs.yaml index 4f4b76a..637fb44 100644 --- a/pmm_psmdb-pbm_setup/docker-compose-rs.yaml +++ b/pmm_psmdb-pbm_setup/docker-compose-rs.yaml @@ -2,6 +2,7 @@ version: "3" services: build_member: image: replica_member/local + profiles: ["classic", "extra"] build: dockerfile: ./Dockerfile context: . @@ -17,6 +18,7 @@ services: depends_on: - build_member image: replica_member/local + profiles: ["classic", "extra"] ports: - "27027:27017" networks: @@ -45,6 +47,7 @@ services: depends_on: - build_member image: replica_member/local + profiles: ["classic", "extra"] networks: - pmm-qa - pmm-ui-tests1 @@ -70,6 +73,7 @@ services: depends_on: - build_member image: replica_member/local + profiles: ["classic", "extra"] networks: - pmm-qa - pmm-ui-tests1 @@ -91,9 +95,92 @@ services: container_name: rs103 hostname: rs103 + rs201: + depends_on: + - build_member + image: replica_member/local + profiles: ["extra"] + ports: + - "27037:27017" + networks: + - pmm-qa + - pmm-ui-tests1 + - qa-integration + - pmm-ui-tests3 + - pmm-ui-tests2 + volumes: + - ./conf/pbm:/etc/pbm + - ./conf/mongod-rs:/etc/mongod + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - /tmp/backup_data:/tmp/backup_data + privileged: true + environment: + PBM_MONGODB_URI: mongodb://${PBM_USER:-pbm}:${PBM_PASS:-pbmpass}@127.0.0.1:27017 + PMM_AGENT_SERVER_ADDRESS: ${PMM_SERVER_CONTAINER_ADDRESS:-pmm-server:443} + PMM_AGENT_SERVER_USERNAME: admin + PMM_AGENT_SERVER_PASSWORD: ${ADMIN_PASSWORD:-password} + PMM_AGENT_SERVER_INSECURE_TLS: 1 + container_name: rs201 + hostname: rs201 + + rs202: + depends_on: + - build_member + image: replica_member/local + profiles: ["extra"] + networks: + - pmm-qa + - pmm-ui-tests1 + - qa-integration + - pmm-ui-tests2 + - pmm-ui-tests3 + volumes: + - ./conf/pbm:/etc/pbm + - ./conf/mongod-rs:/etc/mongod + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - /tmp/backup_data:/tmp/backup_data + privileged: true + environment: + PBM_MONGODB_URI: mongodb://${PBM_USER:-pbm}:${PBM_PASS:-pbmpass}@127.0.0.1:27017 + PMM_AGENT_SERVER_ADDRESS: ${PMM_SERVER_CONTAINER_ADDRESS:-pmm-server:443} + PMM_AGENT_SERVER_USERNAME: admin + PMM_AGENT_SERVER_PASSWORD: ${ADMIN_PASSWORD:-password} + PMM_AGENT_SERVER_INSECURE_TLS: 1 + container_name: rs202 + hostname: rs202 + + rs203: + depends_on: + - build_member + image: replica_member/local + profiles: ["extra"] + networks: + - pmm-qa + - pmm-ui-tests1 + - qa-integration + - pmm-ui-tests2 + - pmm-ui-tests3 + volumes: + - ./conf/pbm:/etc/pbm + - ./conf/mongod-rs:/etc/mongod + - /sys/fs/cgroup:/sys/fs/cgroup:ro + - /tmp/backup_data:/tmp/backup_data + privileged: true + environment: + PBM_MONGODB_URI: mongodb://${PBM_USER:-pbm}:${PBM_PASS:-pbmpass}@127.0.0.1:27017 + PMM_AGENT_SERVER_ADDRESS: ${PMM_SERVER_CONTAINER_ADDRESS:-pmm-server:443} + PMM_AGENT_SERVER_USERNAME: admin + PMM_AGENT_SERVER_PASSWORD: ${ADMIN_PASSWORD:-password} + PMM_AGENT_SERVER_INSECURE_TLS: 1 + container_name: rs203 + hostname: rs203 + minio: image: minio/minio + profiles: ["classic", "extra"] container_name: minio + depends_on: + - build_member networks: - pmm-qa - pmm-ui-tests1 @@ -110,6 +197,7 @@ services: createbucket: container_name: createbucket image: minio/mc + profiles: ["classic", "extra"] networks: - pmm-qa - pmm-ui-tests1 diff --git a/pmm_psmdb-pbm_setup/start-rs-only.sh b/pmm_psmdb-pbm_setup/start-rs-only.sh index 48f44fb..f428d45 100755 --- a/pmm_psmdb-pbm_setup/start-rs-only.sh +++ b/pmm_psmdb-pbm_setup/start-rs-only.sh @@ -1,11 +1,16 @@ #!/bin/bash set -e +profile=${COMPOSE_PROFILES:-classic} + docker network create qa-integration || true docker network create pmm-qa || true docker network create pmm-ui-tests_pmm-network || true docker network create pmm2-upgrade-tests_pmm-network || true docker network create pmm2-ui-tests_pmm-network || true + +export COMPOSE_PROFILES=${profile} + docker-compose -f docker-compose-rs.yaml down -v --remove-orphans docker-compose -f docker-compose-rs.yaml build docker-compose -f docker-compose-rs.yaml up -d @@ -15,3 +20,8 @@ sleep 30 echo bash -x ./configure-replset.sh bash -x ./configure-agents.sh + +if [ $profile = "extra" ]; then + bash -x ./configure-extra-replset.sh + bash -x ./configure-extra-agents.sh +fi diff --git a/pmm_psmdb-pbm_setup/start-rs.sh b/pmm_psmdb-pbm_setup/start-rs.sh index e94c14e..527003e 100755 --- a/pmm_psmdb-pbm_setup/start-rs.sh +++ b/pmm_psmdb-pbm_setup/start-rs.sh @@ -2,12 +2,16 @@ set -e pmm_server_admin_pass=${ADMIN_PASSWORD:-password} +profile=${COMPOSE_PROFILES:-classic} docker network create qa-integration || true docker network create pmm-qa || true docker network create pmm-ui-tests_pmm-network || true docker network create pmm2-upgrade-tests_pmm-network || true docker network create pmm2-ui-tests_pmm-network || true + +export COMPOSE_PROFILES=${profile} + docker-compose -f docker-compose-rs.yaml -f docker-compose-pmm.yaml down -v --remove-orphans docker-compose -f docker-compose-rs.yaml -f docker-compose-pmm.yaml build docker-compose -f docker-compose-pmm.yaml -f docker-compose-rs.yaml up -d