Files
my-rook-config/deploy/examples/create-external-cluster-resources.sh
T
Sébastien Han c890710b63 core: change directory layout
As per discussion, proposing a new layout for the charts/yaml/olm files.

./deploy
├── charts
│   ├── rook-ceph
│   │   └── templates
│   └── rook-ceph-cluster
│       └── templates
├── examples
│   ├── csi
│   │   ├── cephfs
│   │   └── rbd
│   ├── flex
│   ├── monitoring
│   ├── pre-k8s-1.16
└── olm
    └── assemble

Signed-off-by: Sébastien Han <seb@redhat.com>
2021-11-30 09:12:53 +01:00

103 lines
3.5 KiB
Bash

#!/bin/bash
# this script creates all the users/keys on the external cluster
# those keys will be injected via the import-external-cluster.sh once this one is done running
# so you can run import-external-cluster.sh right after this script
# run me like: . deploy/examples/create-external-cluster-resources.sh
set -e
#############
# VARIABLES #
#############
: "${CLIENT_CHECKER_NAME:=client.healthchecker}"
: "${RGW_POOL_PREFIX:=default}"
: "${ns:=rook-ceph-external}"
#############
# FUNCTIONS #
#############
function is_available {
command -v "$@" &>/dev/null
}
function checkEnv() {
if ! is_available ceph; then
echo "'ceph' binary is expected'"
return 1
fi
if ! is_available jq; then
echo "'jq' binary is expected'"
return 1
fi
if ! ceph -s 1>/dev/null; then
echo "cannot connect to the ceph cluster"
return 1
fi
}
function createCheckerKey() {
ROOK_EXTERNAL_USER_SECRET=$(ceph auth get-or-create "$CLIENT_CHECKER_NAME" mon 'allow r, allow command quorum_status' mgr 'allow command config' osd 'allow rwx pool='"$RGW_POOL_PREFIX"'.rgw.meta, allow r pool=.rgw.root, allow rw pool='"$RGW_POOL_PREFIX"'.rgw.control, allow x pool='"$RGW_POOL_PREFIX"'.rgw.buckets.index, allow x pool='"$RGW_POOL_PREFIX"'.rgw.log'|awk '/key =/ { print $3}')
export ROOK_EXTERNAL_USER_SECRET
export ROOK_EXTERNAL_USERNAME=$CLIENT_CHECKER_NAME
}
function createCephCSIKeyringRBDNode() {
CSI_RBD_NODE_SECRET=$(ceph auth get-or-create client.csi-rbd-node mon 'profile rbd' osd 'profile rbd'|awk '/key =/ { print $3}')
export CSI_RBD_NODE_SECRET
}
function createCephCSIKeyringRBDProvisioner() {
CSI_RBD_PROVISIONER_SECRET=$(ceph auth get-or-create client.csi-rbd-provisioner mon 'profile rbd' mgr 'allow rw' osd 'profile rbd'|awk '/key =/ { print $3}')
export CSI_RBD_PROVISIONER_SECRET
}
function createCephCSIKeyringCephFSNode() {
CSI_CEPHFS_NODE_SECRET=$(ceph auth get-or-create client.csi-cephfs-node mon 'allow r' mgr 'allow rw' osd 'allow rw tag cephfs *=*' mds 'allow rw'|awk '/key =/ { print $3}')
export CSI_CEPHFS_NODE_SECRET
}
function createCephCSIKeyringCephFSProvisioner() {
CSI_CEPHFS_PROVISIONER_SECRET=$(ceph auth get-or-create client.csi-cephfs-provisioner mon 'allow r' mgr 'allow rw' osd 'allow rw tag cephfs metadata=*'|awk '/key =/ { print $3}')
export CSI_CEPHFS_PROVISIONER_SECRET
}
function getFSID() {
ROOK_EXTERNAL_FSID=$(ceph fsid)
export ROOK_EXTERNAL_FSID
}
function externalMonData() {
ROOK_EXTERNAL_CEPH_MON_DATA=$(ceph mon dump -f json 2>/dev/null|jq --raw-output .mons[0].name)=$(ceph mon dump -f json 2>/dev/null|jq --raw-output .mons[0].public_addrs.addrvec[0].addr)
export ROOK_EXTERNAL_CEPH_MON_DATA
}
function namespace() {
export NAMESPACE=$ns
}
function createRGWAdminOpsUser() {
createRGWAdminOpsUserKeys=$(radosgw-admin user create --uid rgw-admin-ops-user --display-name "Rook RGW Admin Ops user" --caps "buckets=*;users=*;usage=read;metadata=read;zone=read"|jq --raw-output .keys[0])
createRGWAdminOpsUserAccessKey=$(echo "$createRGWAdminOpsUserKeys"|jq --raw-output .access_key)
createRGWAdminOpsUserSecretKey=$(echo "$createRGWAdminOpsUserKeys"|jq --raw-output .secret_key)
echo "export RGW_ADMIN_OPS_USER_ACCESS_KEY=$createRGWAdminOpsUserAccessKey"
echo "export RGW_ADMIN_OPS_USER_SECRET_KEY=$createRGWAdminOpsUserSecretKey"
}
########
# MAIN #
########
checkEnv
createCheckerKey
createCephCSIKeyringRBDNode
createCephCSIKeyringRBDProvisioner
createCephCSIKeyringCephFSNode
createCephCSIKeyringCephFSProvisioner
getFSID
externalMonData
namespace
createRGWAdminOpsUser