X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ad17f016de2feecc24a163af77c9c9c5add7dc3b..2b541090d500166243c84a9d7d2f9dbedf9f7360:/tools/salt-install/provision.sh diff --git a/tools/salt-install/provision.sh b/tools/salt-install/provision.sh index 012e003717..e438dfa775 100755 --- a/tools/salt-install/provision.sh +++ b/tools/salt-install/provision.sh @@ -241,11 +241,12 @@ arguments ${@} declare -A NODES -if [ -s ${CONFIG_FILE} ]; then +if [ -s ${CONFIG_FILE} -a -s ${CONFIG_FILE}.secrets ]; then + source ${CONFIG_FILE}.secrets source ${CONFIG_FILE} else echo >&2 "You don't seem to have a config file with initial values." - echo >&2 "Please create a '${CONFIG_FILE}' file as described in" + echo >&2 "Please create a '${CONFIG_FILE}' & '${CONFIG_FILE}.secrets' files as described in" echo >&2 " * https://doc.arvados.org/install/salt-single-host.html#single_host, or" echo >&2 " * https://doc.arvados.org/install/salt-multi-host.html#multi_host_multi_hostnames" exit 1 @@ -259,8 +260,8 @@ if [ ! -d ${CONFIG_DIR} ]; then exit 1 fi -if grep -rni 'fixme' ${CONFIG_FILE} ${CONFIG_DIR} ; then - echo >&2 "The config file ${CONFIG_FILE} has some parameters that need to be modified." +if grep -rni 'fixme' ${CONFIG_FILE}.secrets ${CONFIG_FILE} ${CONFIG_DIR} ; then + echo >&2 "The config files has some parameters that need to be modified." echo >&2 "Please, fix them and re-run the provision script." exit 1 fi @@ -287,7 +288,7 @@ else USE_SINGLE_HOSTNAME="no" # We set this variable, anyway, so sed lines do not fail and we don't need to add more # conditionals - HOSTNAME_EXT="${CLUSTER}.${DOMAIN}" + HOSTNAME_EXT="${DOMAIN}" fi if [ "${DUMP_CONFIG}" = "yes" ]; then @@ -396,10 +397,12 @@ fi if [ "x${VAGRANT}" = "xyes" ]; then EXTRA_STATES_DIR="/home/vagrant/${CONFIG_DIR}/states" SOURCE_PILLARS_DIR="/home/vagrant/${CONFIG_DIR}/pillars" + SOURCE_TOFS_DIR="/home/vagrant/${CONFIG_DIR}/tofs" SOURCE_TESTS_DIR="/home/vagrant/${TESTS_DIR}" else EXTRA_STATES_DIR="${SCRIPT_DIR}/${CONFIG_DIR}/states" SOURCE_PILLARS_DIR="${SCRIPT_DIR}/${CONFIG_DIR}/pillars" + SOURCE_TOFS_DIR="${SCRIPT_DIR}/${CONFIG_DIR}/tofs" SOURCE_TESTS_DIR="${SCRIPT_DIR}/${TESTS_DIR}" fi @@ -453,9 +456,12 @@ for f in $(ls "${SOURCE_PILLARS_DIR}"/*); do s#__SSL_KEY_ENCRYPTED__#${SSL_KEY_ENCRYPTED}#g; s#__SSL_KEY_AWS_REGION__#${SSL_KEY_AWS_REGION}#g; s#__SSL_KEY_AWS_SECRET_NAME__#${SSL_KEY_AWS_SECRET_NAME}#g; + s#__CONTROLLER_NGINX_WORKERS__#${CONTROLLER_NGINX_WORKERS}#g; + s#__CONTROLLER_MAX_CONCURRENT_REQUESTS__#${CONTROLLER_MAX_CONCURRENT_REQUESTS}#g; s#__MONITORING_USERNAME__#${MONITORING_USERNAME}#g; s#__MONITORING_EMAIL__#${MONITORING_EMAIL}#g; - s#__MONITORING_PASSWORD__#${MONITORING_PASSWORD}#g" \ + s#__MONITORING_PASSWORD__#${MONITORING_PASSWORD}#g; + s#__DISPATCHER_SSH_PRIVKEY__#${DISPATCHER_SSH_PRIVKEY//$'\n'/\\n}#g" \ "${f}" > "${P_DIR}"/$(basename "${f}") done @@ -530,9 +536,12 @@ if [ -d "${SOURCE_STATES_DIR}" ]; then s#__SSL_KEY_ENCRYPTED__#${SSL_KEY_ENCRYPTED}#g; s#__SSL_KEY_AWS_REGION__#${SSL_KEY_AWS_REGION}#g; s#__SSL_KEY_AWS_SECRET_NAME__#${SSL_KEY_AWS_SECRET_NAME}#g; + s#__CONTROLLER_NGINX_WORKERS__#${CONTROLLER_NGINX_WORKERS}#g; + s#__CONTROLLER_MAX_CONCURRENT_REQUESTS__#${CONTROLLER_MAX_CONCURRENT_REQUESTS}#g; s#__MONITORING_USERNAME__#${MONITORING_USERNAME}#g; s#__MONITORING_EMAIL__#${MONITORING_EMAIL}#g; - s#__MONITORING_PASSWORD__#${MONITORING_PASSWORD}#g" \ + s#__MONITORING_PASSWORD__#${MONITORING_PASSWORD}#g; + s#__DISPATCHER_SSH_PRIVKEY__#${DISPATCHER_SSH_PRIVKEY//$'\n'/\\n}#g" \ "${f}" > "${F_DIR}/extra/extra"/$(basename "${f}") done fi @@ -541,6 +550,12 @@ fi # As we need to separate both states and pillars in case we want specific # roles, we iterate on both at the same time +# Formula template overrides (TOFS) +# See: https://template-formula.readthedocs.io/en/latest/TOFS_pattern.html#template-override +if [ -d ${SOURCE_TOFS_DIR} ]; then + find ${SOURCE_TOFS_DIR} -mindepth 1 -maxdepth 1 -type d -exec cp -r "{}" ${S_DIR} \; +fi + # States cat > ${S_DIR}/top.sls << EOFTSLS base: @@ -647,7 +662,7 @@ if [ -z "${ROLES}" ]; then CERT_NAME=${HOSTNAME_EXT} else # We are in a multiple-hostnames env - CERT_NAME=${c}.${CLUSTER}.${DOMAIN} + CERT_NAME=${c}.${DOMAIN} fi # As the pillar differs whether we use LE or custom certs, we need to do a final edition on them @@ -759,9 +774,9 @@ else grep -q "letsencrypt" ${P_DIR}/top.sls || echo " - letsencrypt" >> ${P_DIR}/top.sls for SVC in grafana prometheus; do grep -q "letsencrypt_${SVC}_configuration" ${P_DIR}/top.sls || echo " - letsencrypt_${SVC}_configuration" >> ${P_DIR}/top.sls - sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${SVC}.${CLUSTER}.${DOMAIN}*/g; - s#__CERT_PEM__#/etc/letsencrypt/live/${SVC}.${CLUSTER}.${DOMAIN}/fullchain.pem#g; - s#__CERT_KEY__#/etc/letsencrypt/live/${SVC}.${CLUSTER}.${DOMAIN}/privkey.pem#g" \ + sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${SVC}.${DOMAIN}*/g; + s#__CERT_PEM__#/etc/letsencrypt/live/${SVC}.${DOMAIN}/fullchain.pem#g; + s#__CERT_KEY__#/etc/letsencrypt/live/${SVC}.${DOMAIN}/privkey.pem#g" \ ${P_DIR}/nginx_${SVC}_configuration.sls done if [ "${USE_LETSENCRYPT_ROUTE53}" = "yes" ]; then @@ -871,15 +886,15 @@ else # Special case for keepweb if [ ${R} = "keepweb" ]; then for kwsub in download collections; do - sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${kwsub}.${CLUSTER}.${DOMAIN}*/g; - s#__CERT_PEM__#/etc/letsencrypt/live/${kwsub}.${CLUSTER}.${DOMAIN}/fullchain.pem#g; - s#__CERT_KEY__#/etc/letsencrypt/live/${kwsub}.${CLUSTER}.${DOMAIN}/privkey.pem#g" \ + sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${kwsub}.${DOMAIN}*/g; + s#__CERT_PEM__#/etc/letsencrypt/live/${kwsub}.${DOMAIN}/fullchain.pem#g; + s#__CERT_KEY__#/etc/letsencrypt/live/${kwsub}.${DOMAIN}/privkey.pem#g" \ ${P_DIR}/nginx_${kwsub}_configuration.sls done else - sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${R}.${CLUSTER}.${DOMAIN}*/g; - s#__CERT_PEM__#/etc/letsencrypt/live/${R}.${CLUSTER}.${DOMAIN}/fullchain.pem#g; - s#__CERT_KEY__#/etc/letsencrypt/live/${R}.${CLUSTER}.${DOMAIN}/privkey.pem#g" \ + sed -i "s/__CERT_REQUIRES__/cmd: create-initial-cert-${R}.${DOMAIN}*/g; + s#__CERT_PEM__#/etc/letsencrypt/live/${R}.${DOMAIN}/fullchain.pem#g; + s#__CERT_KEY__#/etc/letsencrypt/live/${R}.${DOMAIN}/privkey.pem#g" \ ${P_DIR}/nginx_${R}_configuration.sls fi else @@ -944,11 +959,11 @@ fi # Leave a copy of the Arvados CA so the user can copy it where it's required if [ "${SSL_MODE}" = "self-signed" ]; then - echo "Copying the Arvados CA certificate '${CLUSTER}.${DOMAIN}-arvados-snakeoil-ca.crt' to the installer dir, so you can import it" + echo "Copying the Arvados CA certificate '${DOMAIN}-arvados-snakeoil-ca.crt' to the installer dir, so you can import it" if [ "x${VAGRANT}" = "xyes" ]; then - cp /etc/ssl/certs/arvados-snakeoil-ca.pem /vagrant/${CLUSTER}.${DOMAIN}-arvados-snakeoil-ca.pem + cp /etc/ssl/certs/arvados-snakeoil-ca.pem /vagrant/${DOMAIN}-arvados-snakeoil-ca.pem else - cp /etc/ssl/certs/arvados-snakeoil-ca.pem ${SCRIPT_DIR}/${CLUSTER}.${DOMAIN}-arvados-snakeoil-ca.crt + cp /etc/ssl/certs/arvados-snakeoil-ca.pem ${SCRIPT_DIR}/${DOMAIN}-arvados-snakeoil-ca.crt fi fi