EB: запускать команды контейнера / сценарии развертывания при изменении конфигурации
Я использую свой веб-сервер на Elastic Beanstalk и использую Papertrail для регистрации. Я использую официальный скрипт.ebextensions для настройки papertrail во время развертывания, но у меня проблема. Я использую переменные окружения как часть моего имени хоста, используемого в качестве отправителя, когда remote_syslog загружает журналы на papertrail, и хотя это отлично работает во время развертывания, когда 01_set_logger_hostname
команда контейнера запускается, я сталкиваюсь с проблемами всякий раз, когда я изменяю переменные среды, изменяя конфигурацию среды, так как это кажется eb config
call только перезапустит сервер приложений, но не запустит ни один из сценариев, запущенных во время развертывания, включая команды контейнера ebextensions.
"/tmp/set-logger-hostname.sh":
mode: "00555"
owner: root
group: root
encoding: plain
content: |
#!/bin/bash
logger_config="/etc/log_files.yml"
appname=`{ "Ref" : "AWSEBEnvironmentName" }`
instid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
myhostname=${SOME_VARIABLE}_${appname}_${instid}
if [ -f $logger_config ]; then
# Sub the hostname
sed "s/hostname:.*/hostname: $myhostname/" -i $logger_config
fi
Как видите, мое имя хоста зависит от ${SOME_VARIABLE}
Мне нужно обновлять имя хоста всякий раз, когда ${SOME_VARIABLE}
модифицируется следующим eb config
,
Есть ли способ запустить сценарий для запуска всякий раз, когда eb config
команда выполняется, так что я могу не только перезапустить свое веб-приложение, но и перенастроить и перезапустить remote_syslog
с обновленным именем хоста?
1 ответ
Теперь это возможно в средах на базе AWS Linux 2 с помощью крючков платформы развертывания конфигурации .
Например, вы можете сделать сценарий оболочки
.platform/confighooks/predeploy/predeploy.sh
который будет работать при всех изменениях конфигурации. Убедитесь, что вы сделали этот файл исполняемым в соответствии с git, иначе Elastic Beanstalk выдаст ошибку отказа в разрешении.