Подтвердить что ты не робот

Ссылка на переменные env из конфигурационных файлов Elast Beanstalk.ebextensions

Возможно ли ссылаться на свойства контейнера PARAM1/PARAM2 и т.д. из конфигурационных файлов .ebextensions. Если да, то как? Я пробовал $PARAM1, но это казалось пустым значением.

Я хочу, чтобы имя хоста при запуске содержало DEV, QA или PROD, которые я передаю в свой контейнер через переменную среды PARAM1.

commands:
  01-set-correct-hostname:
    command: hostname myappname{$PARAM1}.com
4b9b3361

Ответ 2

Вот что сработало для меня. Я попробовал принятый подход и не дал желаемого результата (фигурные скобки были включены в выход). Команды устранения неполадок, которые выполняются из файла .config при загрузке в Elastic Beanstalk, также являются немного сложной задачей (или я просто точно не знаю, где искать).

Окружение AWS:

  • Тип - эластичный бобовый стебель
  • Платформа - 64-битная версия Amazon Linux 2015.09 v2.0.4 с запуском PHP 5.6

Эластичные свойства среды Beanstalk (Конфигурация → Конфигурация программного обеспечения → Свойства среды):

  • Название свойства - HELLO_VARIABLE
  • Значение свойства - тест

Пример .config Файл, включенный в папку .ebextensions в артефакте развертывания:

container_commands:
  0_test-variable:
    cwd: /tmp
    command: "touch ${HELLO_VARIABLE}_0_.txt"
  1_test-variable:
    cwd: /tmp
    command: "touch {$HELLO_VARIABLE}_1_.txt"
  2_test-variable:
    cwd: /tmp
    command: "touch $HELLO_VARIABLE_2_.txt"

После того, как артефакт был развернут с использованием Elastic Beanstalk, каталог /tmp в экземпляре EC2 будет содержать следующие файлы (обратите внимание на фигурные скобки и позицию $):

  • touch ${HELLO_VARIABLE} _0_.txt создает /tmp/test _0_.txt
  • touch {$ HELLO_VARIABLE} _1_.txt создает /tmp/ {test} _1_.txt
  • touch $HELLO_VARIABLE_2_.txt создает /tmp/.txt

Ответ 3

Чтобы сделать переменные среды доступными на этапе команд, выполните их анализ в bash исходный файл.

000001.envvars.config

...
commands:
  000001_envvars_to_bash_source_file:
    command: |
      # source our elastic beanstalk environment variables
      /opt/elasticbeanstalk/bin/get-config --output YAML environment|perl -ne "/^\w/ or next; s/: /=/; print qq|\$_|" > /var/tmp/envvars
      chmod 400 /var/tmp/envvars
...

Затем я использую: -

source /var/tmp/envvars

в последующих командах.

Ответ 4

Принятый ответ довольно устарел.

Теперь вы можете использовать /opt/elasticbeanstalk/support/envvars файл, который уже является оболочкой script, готовой к отправке:

commands:
  01_update_composer:
    command: |
      . /opt/elasticbeanstalk/support/envvars
      /usr/bin/composer.phar self-update

container_commands:
  01_run_composer:
  command: |
    composer.phar install --no-scripts --no-dev  # already has user-specified env variables

Update:

После некоторого более глубокого исследования выяснится, что container_commands: включает переменные среды, но commands: not.

Ответ 5

В этом блоге подробно описаны различные варианты того, как вы можете это достичь.