e2c56108ee
1. Extending templater with kyaml functions and creating combined catalogue to be able to request/update the existing resources. This is based on 'everything is transformer' concept introduced in kustomize 4.x That includes gathering all secrets into 1 variable catalogue and special mechanism to regenerate/merge with manual secrets. 2. Implementing 'catalogue per cluster' approach for secrets. 3. Rearranging secrets so it's possible to use: pgp (each person may have his own key), age, Hachicorp Vault and etc and the list of people who can decrypt documents is set in a special file. Since in some cases there should be a separate list of people who can decrypt data - this list is set for each cluster (ephemeral and target) separatelly. Closes: #586 Change-Id: I038f84dd138d5ad4a35f4862c61ff2124c2fd530
115 lines
3.3 KiB
Bash
Executable File
115 lines
3.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Licensed to the Apache Software Foundation (ASF) under one
|
|
# or more contributor license agreements. See the NOTICE file
|
|
# distributed with this work for additional information
|
|
# regarding copyright ownership. The ASF licenses this file
|
|
# to you under the Apache License, Version 2.0 (the
|
|
# "License"); you may not use this file except in compliance
|
|
# with the License. You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing,
|
|
# software distributed under the License is distributed on an
|
|
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
# KIND, either express or implied. See the License for the
|
|
# specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
set -xeo pipefail
|
|
|
|
source tools/export_sops
|
|
|
|
export AIRSHIPCTL_WS=${AIRSHIPCTL_WS:-$PWD}
|
|
export AIRSHIP_CONFIG_PHASE_REPO_URL=${AIRSHIP_CONFIG_PHASE_REPO_URL:-$PWD}
|
|
|
|
ZUUL_JOBS_PATH=zuul.d/jobs.yaml
|
|
GATE_RUNNER_YAML_PATH=playbooks/airshipctl-gate-runner.yaml
|
|
OUTPUT_DIR=""
|
|
STOP_SCRIPT=""
|
|
SKIP_LIST=""
|
|
MUTE=0
|
|
|
|
show_help() {
|
|
cat << EOF
|
|
Usage: $0 [options]
|
|
Run set of deployments scripts for airshipctl
|
|
|
|
-h, --help Display help
|
|
-s, --stop-at NUMBER Specify script number where to stop execution
|
|
-p --pass LIST Comma separated list of script numbers to skip
|
|
-o, --output-dir DIRNAME The output of each script will be saved in the specified directory in a separate file
|
|
-m, --mute Mute the output from scripts
|
|
|
|
EOF
|
|
}
|
|
|
|
# read the options
|
|
options=$(getopt -o hmo:p:s: --long help,mute,output-dir:,pass:,stop-at: -- "$@")
|
|
if [ $? != 0 ] ; then echo "Failed to parse options...exiting." >&2 ; exit 1 ; fi
|
|
eval set -- "$options"
|
|
|
|
while true; do
|
|
case "$1" in
|
|
-s | --stop-at)
|
|
STOP_SCRIPT="$2"
|
|
shift 2
|
|
;;
|
|
-p | --pass)
|
|
SKIP_LIST="$2"
|
|
shift 2
|
|
;;
|
|
-o | --output-dir)
|
|
OUTPUT_DIR="$2"
|
|
mkdir -p $OUTPUT_DIR
|
|
shift 2
|
|
;;
|
|
-m | --mute )
|
|
MUTE=1
|
|
shift
|
|
;;
|
|
-h | --help )
|
|
show_help
|
|
exit 0
|
|
;;
|
|
-- )
|
|
shift
|
|
break
|
|
;;
|
|
esac
|
|
done
|
|
|
|
SCRIPT_LIST=$(cat $ZUUL_JOBS_PATH | yq '.[] | select(.job.name == "airship-airshipctl-gate-script-runner") | .job.vars.gate_scripts[]' -c -r)
|
|
if [[ ! $SCRIPT_LIST ]]; then
|
|
SCRIPT_LIST=$(cat $GATE_RUNNER_YAML_PATH | yq '.[]| select (.name=="airshipctl_gate_runner")| .tasks[]| select (.name=="set_default_gate_scripts")| .set_fact.gate_scripts_default[]' -c -r)
|
|
fi
|
|
|
|
SKIP_LIST=$(echo ${SKIP_LIST//,/ })
|
|
|
|
for script in $SCRIPT_LIST; do
|
|
SCRIPT_NAME=$(awk -F "/" "{ print \$NF }" <<<$script)
|
|
if [[ $SCRIPT_NAME =~ ([0-9]+) ]]; then
|
|
SCRIPT_NUM="${BASH_REMATCH[1]}"
|
|
fi
|
|
if [[ " ${SKIP_LIST[@]} " =~ " ${SCRIPT_NUM} " ]]; then
|
|
if [[ $STOP_SCRIPT ]] && [[ $SCRIPT_NAME =~ "${STOP_SCRIPT}_"* ]]; then
|
|
break
|
|
fi
|
|
continue
|
|
fi
|
|
|
|
echo -e "\033[0;32m[ *** Run script $script *** ] \033[0m "
|
|
cmd="sudo --preserve-env=AIRSHIPCTL_WS,AIRSHIP_CONFIG_PHASE_REPO_URL,SOPS_IMPORT_PGP $script"
|
|
if [[ $OUTPUT_DIR ]]; then
|
|
$cmd > ${OUTPUT_DIR}/${SCRIPT_NAME}.out 2>&1
|
|
elif [[ "$MUTE" -eq "1" ]]; then
|
|
$cmd > /dev/null 2>&1
|
|
else
|
|
$cmd
|
|
fi
|
|
if [[ $STOP_SCRIPT ]] && [[ $SCRIPT_NAME =~ "${STOP_SCRIPT}_"* ]]; then
|
|
break
|
|
fi
|
|
done
|