Условные контейнеры Elastic Beanstalk не работают - PullRequest
0 голосов
/ 07 апреля 2019

У меня есть два сервера Elastic Beanstalk для одной и той же базы кода. Один - производство, другой - постановка.

Я пытаюсь использовать условную container_command для создания crontab, который будет работать только в рабочей среде. Эти условные операторы прекрасно работают для обычных commands, но всегда оцениваются как истинные для container_commands. Однако, согласно другим постам и примерам SO, они должны работать одинаково для обоих типов команд.

Вот что я пытаюсь сделать:

container_commands:
  01_activate_cronjob:
    test: '[ "${BEANSTALK_ENVIRONMENT}" == "production" ]'
    command: "cat .ebextensions/my_cron_file > /etc/cron.d/my_cron_file && chmod 644 /etc/cron.d/my_cron_file"
    leader_only: true

BEANSTALK_ENVIRONMENT - это переменная Elastic Beanstalk, установленная в моих конфигурациях beanstalk, и я подтвердил, что echo $BEANSTALK_ENVIRONMENT выводит «production» и «staging» соответственно.

Я также пробовал эту test строку:

test: test $BEANSTALK_ENVIRONMENT == production

Кроме того, я проверил правильность этих тестовых команд в терминале.

test $BEANSTALK_ENVIRONMENT == production && echo yes || echo no
# outputs "yes" on the production server and "no" on the staging server

Я знаю, что могу взломать / исправить это, вставив условный оператор в часть command; однако, как я сказал ранее, все, что есть в сети, показывает, что это должно работать, поэтому я в тупике.

1 Ответ

1 голос
/ 10 апреля 2019

Согласно документам AWS вы можете использовать только один из test и leader_only, и если вы используете оба, leader_only выиграет:

Команда может быть только лидером или иметь тест, но не оба (leader_only имеет преимущество).

Я бы пересмотрел, если вам определенно нужен leader_only в вашем конкретномслучаев использования.

...