[bitnami/rabbitmq] Support additional virtual host via RABBITMQ_VHOSTS (#2061)
* [bitnami/rabbitmq] Support additional virtual host via RABBITMQ_VHOSTS Signed-off-by: Nobi <nobi@nobidev.com> * [bitnami/rabbitmq] Grant permission user to vhosts Signed-off-by: Nobi <nobi@nobidev.com> Signed-off-by: Nobi <nobi@nobidev.com>
This commit is contained in:
parent
bd4640522f
commit
41a7169862
|
|
@ -718,6 +718,48 @@ rabbitmq_join_cluster() {
|
|||
debug_execute "${RABBITMQ_BIN_DIR}/rabbitmqctl" start_app
|
||||
}
|
||||
|
||||
########################
|
||||
# Declare a new virtual host
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# RABBITMQ_BIN_DIR
|
||||
# Arguments:
|
||||
# $1 - Name
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
rabbitmq_declare_vhost() {
|
||||
local name="${1:?name is required}"
|
||||
debug "Declaring vhost '${name}'..."
|
||||
|
||||
if ! debug_execute "${RABBITMQ_BIN_DIR}/rabbitmqctl" add_vhost -- "${name}"; then
|
||||
error "Couldn't declared vhost '${name}'."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Allow a user to access a virtual host
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# RABBITMQ_BIN_DIR
|
||||
# Arguments:
|
||||
# $1 - User
|
||||
# $2 - Vhost
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
rabbitmq_set_user_vhost_permission() {
|
||||
local user="${1:?user is required}"
|
||||
local vhost="${2:?vhost is required}"
|
||||
debug "Assigning permissions to user '${user}' to access vhost '${vhost}'..."
|
||||
|
||||
if ! debug_execute "${RABBITMQ_BIN_DIR}/rabbitmqctl" set_permissions --vhost "${vhost}" "${user}" ".*" ".*" ".*"; then
|
||||
error "Couldn't assigned perrmissions to user '${user}' to access vhost '${vhost}'."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Ensure RabbitMQ is initialized
|
||||
# Globals:
|
||||
|
|
@ -781,6 +823,15 @@ rabbitmq_initialize() {
|
|||
rabbitmq_change_password "$RABBITMQ_USERNAME" "$RABBITMQ_PASSWORD"
|
||||
fi
|
||||
|
||||
if [[ -n "${RABBITMQ_VHOSTS:-}" ]]; then
|
||||
for vhost in ${RABBITMQ_VHOSTS}; do
|
||||
rabbitmq_declare_vhost "${vhost}"
|
||||
if [[ -n "${RABBITMQ_USERNAME}" ]]; then
|
||||
rabbitmq_set_user_vhost_permission "${RABBITMQ_USERNAME}" "${vhost}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ "$RABBITMQ_NODE_TYPE" != "stats" ]] && [[ -n "$RABBITMQ_CLUSTER_NODE_NAME" ]]; then
|
||||
rabbitmq_join_cluster "$RABBITMQ_CLUSTER_NODE_NAME" "$RABBITMQ_NODE_TYPE"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ rabbitmq_env_vars=(
|
|||
RABBITMQ_NODE_PORT_NUMBER
|
||||
RABBITMQ_NODE_TYPE
|
||||
RABBITMQ_VHOST
|
||||
RABBITMQ_VHOSTS
|
||||
RABBITMQ_CLUSTER_REBALANCE
|
||||
RABBITMQ_CLUSTER_REBALANCE_ATTEMPTS
|
||||
RABBITMQ_USERNAME
|
||||
|
|
@ -138,6 +139,9 @@ export RABBITMQ_USERNAME="${RABBITMQ_USERNAME:-user}"
|
|||
RABBITMQ_PASSWORD="${RABBITMQ_PASSWORD:-"${RABBITMQ_DEFAULT_PASS:-}"}"
|
||||
export RABBITMQ_PASSWORD="${RABBITMQ_PASSWORD:-bitnami}"
|
||||
|
||||
# RabbitMQ vhosts
|
||||
export RABBITMQ_VHOSTS="${RABBITMQ_VHOSTS:-}"
|
||||
|
||||
# Force boot cluster
|
||||
export RABBITMQ_FORCE_BOOT="${RABBITMQ_FORCE_BOOT:-no}"
|
||||
|
||||
|
|
|
|||
|
|
@ -718,6 +718,48 @@ rabbitmq_join_cluster() {
|
|||
debug_execute "${RABBITMQ_BIN_DIR}/rabbitmqctl" start_app
|
||||
}
|
||||
|
||||
########################
|
||||
# Declare a new virtual host
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# RABBITMQ_BIN_DIR
|
||||
# Arguments:
|
||||
# $1 - Name
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
rabbitmq_declare_vhost() {
|
||||
local name="${1:?name is required}"
|
||||
debug "Declaring vhost '${name}'..."
|
||||
|
||||
if ! debug_execute "${RABBITMQ_BIN_DIR}/rabbitmqctl" add_vhost -- "${name}"; then
|
||||
error "Couldn't declared vhost '${name}'."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Allow a user to access a virtual host
|
||||
# Globals:
|
||||
# BITNAMI_DEBUG
|
||||
# RABBITMQ_BIN_DIR
|
||||
# Arguments:
|
||||
# $1 - User
|
||||
# $2 - Vhost
|
||||
# Returns:
|
||||
# None
|
||||
#########################
|
||||
rabbitmq_set_user_vhost_permission() {
|
||||
local user="${1:?user is required}"
|
||||
local vhost="${2:?vhost is required}"
|
||||
debug "Assigning permissions to user '${user}' to access vhost '${vhost}'..."
|
||||
|
||||
if ! debug_execute "${RABBITMQ_BIN_DIR}/rabbitmqctl" set_permissions --vhost "${vhost}" "${user}" ".*" ".*" ".*"; then
|
||||
error "Couldn't assigned perrmissions to user '${user}' to access vhost '${vhost}'."
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
########################
|
||||
# Ensure RabbitMQ is initialized
|
||||
# Globals:
|
||||
|
|
@ -781,6 +823,15 @@ rabbitmq_initialize() {
|
|||
rabbitmq_change_password "$RABBITMQ_USERNAME" "$RABBITMQ_PASSWORD"
|
||||
fi
|
||||
|
||||
if [[ -n "${RABBITMQ_VHOSTS:-}" ]]; then
|
||||
for vhost in ${RABBITMQ_VHOSTS}; do
|
||||
rabbitmq_declare_vhost "${vhost}"
|
||||
if [[ -n "${RABBITMQ_USERNAME}" ]]; then
|
||||
rabbitmq_set_user_vhost_permission "${RABBITMQ_USERNAME}" "${vhost}"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
if [[ "$RABBITMQ_NODE_TYPE" != "stats" ]] && [[ -n "$RABBITMQ_CLUSTER_NODE_NAME" ]]; then
|
||||
rabbitmq_join_cluster "$RABBITMQ_CLUSTER_NODE_NAME" "$RABBITMQ_NODE_TYPE"
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ rabbitmq_env_vars=(
|
|||
RABBITMQ_NODE_PORT_NUMBER
|
||||
RABBITMQ_NODE_TYPE
|
||||
RABBITMQ_VHOST
|
||||
RABBITMQ_VHOSTS
|
||||
RABBITMQ_CLUSTER_REBALANCE
|
||||
RABBITMQ_CLUSTER_REBALANCE_ATTEMPTS
|
||||
RABBITMQ_USERNAME
|
||||
|
|
@ -138,6 +139,9 @@ export RABBITMQ_USERNAME="${RABBITMQ_USERNAME:-user}"
|
|||
RABBITMQ_PASSWORD="${RABBITMQ_PASSWORD:-"${RABBITMQ_DEFAULT_PASS:-}"}"
|
||||
export RABBITMQ_PASSWORD="${RABBITMQ_PASSWORD:-bitnami}"
|
||||
|
||||
# RabbitMQ vhosts
|
||||
export RABBITMQ_VHOSTS="${RABBITMQ_VHOSTS:-}"
|
||||
|
||||
# Force boot cluster
|
||||
export RABBITMQ_FORCE_BOOT="${RABBITMQ_FORCE_BOOT:-no}"
|
||||
|
||||
|
|
|
|||
|
|
@ -190,6 +190,7 @@ Available variables:
|
|||
#### Node and cluster configuration
|
||||
|
||||
* `RABBITMQ_VHOST`: RabbitMQ application vhost. Default: **/**
|
||||
* `RABBITMQ_VHOSTS`: List of additional virtual host (vhost), separated by space. E.g.: **/shared /prioritized /tasks**
|
||||
* `RABBITMQ_USERNAME`: RabbitMQ application username. Default: **user**
|
||||
* `RABBITMQ_PASSWORD`: RabbitMQ application password. Default: **bitnami**
|
||||
* `RABBITMQ_SECURE_PASSWORD`: Whether to set the RabbitMQ password securely. This is incompatible with loading external RabbitMQ definitions. Default: **no**
|
||||
|
|
|
|||
Loading…
Reference in New Issue