Last active
June 21, 2019 20:45
-
-
Save mttjohnson/74acf3b37d9ef35accd2c982f4e9dd9d to your computer and use it in GitHub Desktop.
Updating Magento Varnish Servers in env.php
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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