Skip to content

Commit 50156e4

Browse files
committed
rebasing branch
1 parent 05ccca4 commit 50156e4

4 files changed

Lines changed: 621 additions & 1 deletion

File tree

charts/qtodo/values.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ app:
8484
tag: "latest"
8585
image: "registry.redhat.io/openshift4/ose-tools-rhel9:latest"
8686

87+
# Seed image Job: mirrors the upstream qtodo image into the configured
88+
# registry so the deployment can pull before the supply-chain pipeline runs.
89+
seedImage:
90+
enabled: false
91+
source: "quay.io/validatedpatterns/qtodo:latest"
92+
tag: "latest"
93+
image: "registry.redhat.io/openshift4/ose-tools-rhel9:latest"
94+
8795
# Truststore configuration for Java CA certificates (PKCS12 format)
8896
truststore:
8997
enabled: true

common/scripts/vault-utils.sh

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/usr/bin/env bash
2+
set -eu
3+
4+
get_abs_filename() {
5+
# $1 : relative filename
6+
echo "$(cd "$(dirname "$1")" && pwd)/$(basename "$1")"
7+
}
8+
9+
SCRIPT=$(get_abs_filename "$0")
10+
SCRIPTPATH=$(dirname "${SCRIPT}")
11+
COMMONPATH=$(dirname "${SCRIPTPATH}")
12+
PATTERNPATH=$(dirname "${COMMONPATH}")
13+
MAIN_CLUSTERGROUP_FILE="./values-$(common/scripts/determine-main-clustergroup.sh).yaml"
14+
15+
# Parse arguments
16+
if [ $# -lt 1 ]; then
17+
echo "Specify at least the command ($#): $*"
18+
exit 1
19+
fi
20+
21+
TASK="${1}"
22+
PATTERN_NAME=${2:-$(basename "`pwd`")}
23+
24+
if [ -z "${TASK}" ]; then
25+
echo "Task is unset"
26+
exit 1
27+
fi
28+
29+
EXTRA_PLAYBOOK_OPTS="${EXTRA_PLAYBOOK_OPTS:-}"
30+
31+
EXTRA_VARS_FILE=$(mktemp)
32+
trap "rm -f ${EXTRA_VARS_FILE}" EXIT
33+
34+
if [ "$(yq ".clusterGroup.applications.vault.jwt.enabled // \"false\"" "${MAIN_CLUSTERGROUP_FILE}")" == "true" ]; then
35+
OPENSHIFT_DOMAIN="$(oc get dns cluster -o jsonpath='{.spec.baseDomain}')"
36+
GLOBAL_PATTERN="$(yq -r '.global.pattern // ""' "${PATTERNPATH}/values-global.yaml")"
37+
GLOBAL_PATTERN="${GLOBAL_PATTERN:-${PATTERN_NAME}}"
38+
# Replace Helm-style placeholders so Ansible/Jinja2 never sees "{{ $.Values... }}" (invalid Jinja2).
39+
_subst_vault_yaml() {
40+
sed -e "s/{{ \$.Values.global.clusterDomain }}/${OPENSHIFT_DOMAIN}/g" \
41+
-e "s/{{ \$.Values.global.pattern }}/${GLOBAL_PATTERN}/g"
42+
}
43+
OIDC_DISCOVERY_URL="$(yq ".clusterGroup.applications.vault.jwt.oidcDiscoveryUrl" "${MAIN_CLUSTERGROUP_FILE}" | _subst_vault_yaml)"
44+
JWT_ROLES="$(yq -o json ".clusterGroup.applications.vault.jwt.roles" "${MAIN_CLUSTERGROUP_FILE}" | _subst_vault_yaml)"
45+
# Extract JWT policies (policies ending in -jwt-secret)
46+
JWT_POLICIES="$(yq -o json ".clusterGroup.applications.vault.policies" "${MAIN_CLUSTERGROUP_FILE}" | jq '[.[] | select(.name | test("-jwt-secret$"))]')"
47+
48+
if [ "${OIDC_DISCOVERY_URL}" == "null" ] || [ "${JWT_ROLES}" == "null" ] || [ "${JWT_ROLES}" == "[]" ]; then
49+
echo "Vault JWT config is disabled because of missing required fields"
50+
VAULT_JWT_CONFIG="false"
51+
echo "OIDC_DISCOVERY_URL: ${OIDC_DISCOVERY_URL}"
52+
echo "JWT_ROLES: ${JWT_ROLES}"
53+
echo "Vault JWT config is disabled"
54+
else
55+
VAULT_JWT_CONFIG="true"
56+
echo "Vault JWT config is enabled"
57+
fi
58+
59+
else
60+
VAULT_JWT_CONFIG="false"
61+
JWT_ROLES="[]"
62+
JWT_POLICIES="[]"
63+
echo "Vault JWT config is disabled"
64+
fi
65+
66+
# Write extra vars to temp file to handle complex JSON with embedded quotes
67+
cat > "${EXTRA_VARS_FILE}" <<EOF
68+
vault_jwt_roles: ${JWT_ROLES:-[]}
69+
vault_jwt_policies: ${JWT_POLICIES:-[]}
70+
EOF
71+
72+
ansible-playbook -t "${TASK}" \
73+
-e pattern_name="${PATTERN_NAME}" \
74+
-e pattern_dir="${PATTERNPATH}" \
75+
-e vault_jwt_config="${VAULT_JWT_CONFIG}" \
76+
-e oidc_discovery_url="${OIDC_DISCOVERY_URL:-}" \
77+
-e "@${EXTRA_VARS_FILE}" \
78+
${EXTRA_PLAYBOOK_OPTS} "rhvp.cluster_utils.vault"

0 commit comments

Comments
 (0)