Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
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
93 changes: 93 additions & 0 deletions qa-integration/pmm_psmdb-pbm_setup/start-sharded-with-pmm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,74 @@ docker compose -f docker-compose-sharded-with-pmm.yaml exec -T rscfg01 mongo --q
EOF
sleep 60
echo
echo "configuring root user on primary rscfg01 configserver replicaset"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T rscfg01 mongo --quiet << EOF
db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] });
EOF
echo
echo "configuring pbm and pmm roles on configserver replicaset rscfg"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T rscfg01 mongo "mongodb://root:root@localhost/?replicaSet=rscfg" --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 for configserver replicaset rscfg"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T rscfg01 mongo "mongodb://root:root@localhost/?replicaSet=rscfg" --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" }
]
});
Comment thread
coderabbitai[bot] marked this conversation as resolved.
EOF
echo
echo "creating pmm user for configserver replicaset rscfg"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T rscfg01 mongo "mongodb://root:root@localhost/?replicaSet=rscfg" --quiet << EOF
db.getSiblingDB("admin").createUser({
user: "${pmm_user}",
pwd: "${pmm_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
echo
echo "adding shards and creating global mongo user"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T mongos mongo --quiet << EOF
db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] });
Expand Down Expand Up @@ -241,6 +309,31 @@ docker compose -f docker-compose-sharded-with-pmm.yaml exec -T rscfg01 pmm-admin

echo "adding some data"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T mongos mgodatagen -f /etc/datagen/sharded.json --uri=mongodb://root:root@127.0.0.1:27017

echo "triggering chunk migrations and splits so the chunk-move/split dashboards have data"
docker compose -f docker-compose-sharded-with-pmm.yaml exec -T mongos mongo "mongodb://root:root@localhost" --quiet --eval '
var coll = db.getSiblingDB("config").collections.findOne({ _id: "test.test" });
var shards = db.getSiblingDB("config").shards.find().toArray().map(function (s) { return s._id; });
db.getSiblingDB("config").chunks.find({ uuid: coll.uuid }).forEach(function (chunk) {
var target = shards.filter(function (s) { return s !== chunk.shard; })[0];
if (target) {
try {
sh.moveChunk("test.test", chunk.min, target);
} catch (e) {
print("moveChunk failed, skipping: " + e);
}
}
});
var doc = db.getSiblingDB("test").test.findOne();
if (doc) {
try {
sh.splitFind("test.test", { _id: doc._id });
} catch (e) {
print("splitFind failed, skipping: " + e);
}
}
'

tests=${TESTS:-yes}
if [ $tests != "no" ]; then
echo "running tests"
Expand Down
93 changes: 93 additions & 0 deletions qa-integration/pmm_psmdb-pbm_setup/start-sharded.sh
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,74 @@ docker compose -f docker-compose-sharded.yaml exec -T rscfg01 mongo --quiet << E
EOF
sleep 60
echo
echo "configuring root user on primary rscfg01 configserver replicaset"
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 mongo --quiet << EOF
db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] });
EOF
echo
echo "configuring pbm and pmm roles on configserver replicaset rscfg"
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 mongo "mongodb://root:root@localhost/?replicaSet=rscfg" --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 for configserver replicaset rscfg"
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 mongo "mongodb://root:root@localhost/?replicaSet=rscfg" --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 for configserver replicaset rscfg"
docker compose -f docker-compose-sharded.yaml exec -T rscfg01 mongo "mongodb://root:root@localhost/?replicaSet=rscfg" --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
echo
echo "adding shards and creating global mongo user"
docker compose -f docker-compose-sharded.yaml exec -T mongos mongo --quiet << EOF
db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] });
Expand Down Expand Up @@ -246,6 +314,31 @@ docker compose -f docker-compose-sharded.yaml exec -T rscfg01 pmm-admin add mong

echo "adding some data"
docker compose -f docker-compose-sharded.yaml exec -T mongos mgodatagen -f /etc/datagen/sharded.json --uri=mongodb://root:root@127.0.0.1:27017

echo "triggering chunk migrations and splits so the chunk-move/split dashboards have data"
docker compose -f docker-compose-sharded.yaml exec -T mongos mongo "mongodb://root:root@localhost" --quiet --eval '
var coll = db.getSiblingDB("config").collections.findOne({ _id: "test.test" });
var shards = db.getSiblingDB("config").shards.find().toArray().map(function (s) { return s._id; });
db.getSiblingDB("config").chunks.find({ uuid: coll.uuid }).forEach(function (chunk) {
var target = shards.filter(function (s) { return s !== chunk.shard; })[0];
if (target) {
try {
sh.moveChunk("test.test", chunk.min, target);
} catch (e) {
print("moveChunk failed, skipping: " + e);
}
}
});
var doc = db.getSiblingDB("test").test.findOne();
if (doc) {
try {
sh.splitFind("test.test", { _id: doc._id });
} catch (e) {
print("splitFind failed, skipping: " + e);
}
}
'

tests=${TESTS:-yes}
if [ $tests != "no" ]; then
echo "running tests"
Expand Down
Loading