diff --git a/pkg/deploy/generator/scripts/devProxyVMSS.sh b/pkg/deploy/generator/scripts/devProxyVMSS.sh index bdbb8fe35b3..2b405881bce 100644 --- a/pkg/deploy/generator/scripts/devProxyVMSS.sh +++ b/pkg/deploy/generator/scripts/devProxyVMSS.sh @@ -1,53 +1,331 @@ -#Adding retry logic to yum commands in order to avoid stalling out on resource locks -echo "running RHUI fix" -for attempt in {1..5}; do - yum update -y --disablerepo='*' --enablerepo='rhui-microsoft-azure*' && break - if [[ ${attempt} -lt 5 ]]; then sleep 10; else exit 1; fi -done - -echo "running yum update" -for attempt in {1..5}; do - yum -y -x WALinuxAgent -x WALinuxAgent-udev update --allowerasing && break - if [[ ${attempt} -lt 5 ]]; then sleep 10; else exit 1; fi -done - -echo "installing podman-docker" -for attempt in {1..5}; do - yum -y install podman-docker && break - if [[ ${attempt} -lt 5 ]]; then sleep 10; else exit 1; fi -done - -firewall-cmd --add-port=443/tcp --permanent - -mkdir /root/.docker -cat >/root/.docker/config.json </etc/proxy/proxy.crt -base64 -d <<<"$PROXYKEY" >/etc/proxy/proxy.key -base64 -d <<<"$PROXYCLIENTCERT" >/etc/proxy/proxy-client.crt -chown -R 1000:1000 /etc/proxy -chmod 0600 /etc/proxy/proxy.key + local -ra aro_services=( + proxy + ) + log "enabling aro services ${aro_services[*]}" + # shellcheck disable=SC2068 + for service in ${aro_services[@]}; do + log "Enabling $service now" + systemctl enable "$service.service" + done +} -cat >/etc/sysconfig/proxy </etc/systemd/system/proxy.service <<'EOF' -[Unit] + base64 -d <<<"$PROXYCERT" >/etc/proxy/proxy.crt + base64 -d <<<"$PROXYKEY" >/etc/proxy/proxy.key + base64 -d <<<"$PROXYCLIENTCERT" >/etc/proxy/proxy-client.crt + chown -R 1000:1000 /etc/proxy + chmod 0600 /etc/proxy/proxy.key +} + +configure_service_proxy() { + local -r sysconfig_proxy_filename='/etc/sysconfig/proxy' + local -r sysconfig_proxy_file="PROXY_IMAGE='$PROXYIMAGE'" + + write_file sysconfig_proxy_filename sysconfig_proxy_file true + + local -r proxy_service_filename='/etc/systemd/system/proxy.service' + local -r proxy_service_file="[Unit] After=network-online.target Wants=network-online.target @@ -61,34 +339,66 @@ RestartSec=1 StartLimitInterval=0 [Install] -WantedBy=multi-user.target -EOF +WantedBy=multi-user.target" -systemctl enable proxy.service + local -r cron_weekly_pull_image_filename='/etc/cron.weekly/pull-image' + local -r cron_weekly_pull_image_file="#!/bin/bash +docker pull $PROXYIMAGE +systemctl restart proxy.service" + + write_file cron_weekly_pull_image_filename cron_weekly_pull_image_file true + chmod +x "$cron_weekly_pull_image_filename" -cat >/etc/cron.weekly/pull-image <<'EOF' -#!/bin/bash + local -r cron_daily_restart_proxy_filename='/etc/cron.daily/restart-proxy' + local -r cron_daily_restart_proxy_file="#!/bin/bash +systemctl restart proxy.service" + + write_file cron_daily_restart_proxy_filename cron_daily_restart_proxy_file + chmod +x "$cron_daily_restart_proxy_filename" +} -docker pull $PROXYIMAGE -systemctl restart proxy.service -EOF -chmod +x /etc/cron.weekly/pull-image +# write_file +# Args +# 1) filename - string +# 2) file_contents - string +# 3) clobber - boolean; optional - defaults to false +write_file() { + local -n filename="$1" + local -n file_contents="$2" + local -r clobber="${3:-false}" -cat >/etc/cron.weekly/yumupdate <<'EOF' -#!/bin/bash + if $clobber; then + log "Overwriting file $filename" + echo "$file_contents" > "$filename" + else + log "Appending to $filename" + echo "$file_contents" >> "$filename" + fi +} -yum update -y -EOF -chmod +x /etc/cron.weekly/yumupdate +# reboot_vm restores all selinux file contexts, waits 30 seconds then reboots +reboot_vm() { + log "starting" -cat >/etc/cron.daily/restart-proxy <<'EOF' -#!/bin/bash + configure_selinux "true" + (sleep 30 && log "rebooting vm now"; reboot) & +} + +# log is a wrapper for echo that includes the function name +log() { + local -r msg="${1:-"log message is empty"}" + local -r stack_level="${2:-1}" + echo "${FUNCNAME[${stack_level}]}: ${msg}" +} + +# abort is a wrapper for log that exits with an error code +abort() { + local -ri origin_stacklevel=2 + log "${1}" "$origin_stacklevel" + log "Exiting" + exit 1 +} -systemctl restart proxy.service -EOF -chmod +x /etc/cron.daily/restart-proxy +export AZURE_CLOUD_NAME="${AZURECLOUDNAME:?"Failed to carry over variables"}" -( - sleep 30 - reboot -) & +main "$@"