Skip to content

Instantly share code, notes, and snippets.

@mttjohnson
Last active June 21, 2019 20:45
Show Gist options
  • Save mttjohnson/74acf3b37d9ef35accd2c982f4e9dd9d to your computer and use it in GitHub Desktop.
Save mttjohnson/74acf3b37d9ef35accd2c982f4e9dd9d to your computer and use it in GitHub Desktop.
Updating Magento Varnish Servers in env.php
#!/usr/bin/env bash
set -eu
# Variables
LOG_PATH="/home/www-upload/update_magento_varnish_config.log"
MAGENTO_PATH="/var/www/html/current"
# Get Webscale App Servers
APP_SERVERS=$(webscale-cli apps servers)
#echo "${APP_SERVERS}"
# Build list of varnish servers
VARNISH_SERVERS=""
while read -r EACH_APP_SERVER; do
[ -z "${EACH_APP_SERVER}" ] && continue # Exclude empty lines
[[ "${VARNISH_SERVERS}" != "" ]] && EACH_APP_SERVER=$(echo -e "\n${EACH_APP_SERVER}")
VARNISH_SERVERS=$(echo -e "${VARNISH_SERVERS}${EACH_APP_SERVER}:8080")
done <<< "${APP_SERVERS}"
#echo "${VARNISH_SERVERS}"
# List all the existing Varnish Servers
cd ${MAGENTO_PATH}
set +H # disable history expansion
PHP_CODE=$(cat <<'PHP_CODE'
<?php
$env = include("app/etc/env.php");
var_export($env, true);
foreach ($env['http_cache_hosts'] as $each_host) {
echo $each_host['host'] . ":" . $each_host['port'] . "\n";
}
PHP_CODE
)
set -H # re-enable history expansion
MAGENTO_CONFIG=$(echo "${PHP_CODE}" | php)
#echo "${MAGENTO_CONFIG}"
# Loop through all VARNISH_SERVERS
MATCHED_LIST=""
while read -r EACH_ACTUAL; do
[ -z "${EACH_ACTUAL}" ] && continue # Exclude empty lines
# EACH: Check if value from VARNISH_SERVERS exists in MAGENTO_CONFIG
FOUND=0
while read -r EACH_CONFIG; do
[ -z "${EACH_CONFIG}" ] && continue # Exclude empty lines
[[ "${EACH_ACTUAL}" == "${EACH_CONFIG}" ]] && FOUND=1
done <<< "${MAGENTO_CONFIG}"
# EACH: Add found to MATCHED_LIST
ADD_TO_MATCHES="${EACH_ACTUAL}"
[[ "${FOUND}" == "1" ]] && [[ "${MATCHED_LIST}" != "" ]] && ADD_TO_MATCHES=$(echo -e "\n${ADD_TO_MATCHES}")
[[ "${FOUND}" == "1" ]] && MATCHED_LIST=$(echo "${MATCHED_LIST}${ADD_TO_MATCHES}")
done <<< "${VARNISH_SERVERS}"
#echo "${MATCHED_LIST}"
# Check count of VARNISH_SERVERS, MAGENTO_CONFIG, MATCHED_LIST
ACTUAL_COUNT=$(echo "${VARNISH_SERVERS}" | wc -l)
CONFIG_COUNT=$(echo "${MAGENTO_CONFIG}" | wc -l)
MATCH_COUNT=$(echo "${MATCHED_LIST}" | wc -l)
# If they all aren't the same, update Magento configs and log change
if [[ "${ACTUAL_COUNT}" != "${MATCH_COUNT}" ]] || [[ "${CONFIG_COUNT}" != "${MATCH_COUNT}" ]]; then
# Build http cache hosts parameter
HTTP_CACHE_HOSTS=""
while read -r EACH_HOST; do
[ -z "${EACH_HOST}" ] && continue # Exclude empty lines
[[ "${HTTP_CACHE_HOSTS}" != "" ]] && HTTP_CACHE_HOSTS=$(echo "${HTTP_CACHE_HOSTS},")
HTTP_CACHE_HOSTS=$(echo "${HTTP_CACHE_HOSTS}${EACH_HOST}")
done <<< "${VARNISH_SERVERS}"
#echo "${HTTP_CACHE_HOSTS}"
# Update Magento env.php config
cd ${MAGENTO_PATH}
php bin/magento setup:config:set -n --http-cache-hosts=${HTTP_CACHE_HOSTS}
# Log Changes
TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
echo "${TIMESTAMP} Updated http-cache-hosts to: ${HTTP_CACHE_HOSTS}" >> ${LOG_PATH}
fi
# echo "ACTUAL_COUNT: ${ACTUAL_COUNT}"
# echo "CONFIG_COUNT: ${CONFIG_COUNT}"
# echo "MATCH_COUNT: ${MATCH_COUNT}"
#
# # If they all aren't the same, update Magento configs and log change
# if [[ "${ACTUAL_COUNT}" != "${MATCH_COUNT}" ]] || [[ "${CONFIG_COUNT}" != "${MATCH_COUNT}" ]]; then
# echo "needs updates"
# else
# echo "all is well"
# fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment