2013-06-18 4 views
10

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

Один из. Содержимое конфигурации ebextensions создает папку, на самом деле папку, которую нужно создать, это только один раз, потому что, если я развертываю приложение во второй раз или более, у меня есть ошибка, и ошибка говорит, что «папка уже существует».

Так что мне нужно дать условное, если папка уже существует, нет необходимости снова запускать команду для создания папки.

Если у кого есть какие-либо идеи или указания относительно того, как это может быть достигнуто, я был бы очень признателен. Спасибо!

ответ

7

Я думаю, что единственный способ сделать это с условиями оболочек:

commands: 
    make-directory: 
    command: | 
     if [ ! -f "${DIR}" ]; then 
     mkdir "${DIR}" 
     fi 

см больше примера jcabi-beanstalk-maven-plugin.

+0

да вы правы, я уже прошу AWS условно не является поддерживается в .ebextensions. хорошо, спасибо за ваше предложение, я попробую сначала. – Khalid

+0

Кстати, как мне понять, если [! -f "$ {DIR}"]; затем mkdir "$ {DIR}" fi – Khalid

+0

Мне нужно 3 условия для настройки для 3 команд: 1) команда должна проверить, есть ли какая-либо папка, уже созданная или нет, 2) я поместил один скрипт в/etc/fstab , поэтому мне нужно проверить, что скрипт уже создан или нет, 3) Мне нужно проверить папку alredy mount (mount) или нет. это будет здорово, если я смогу понять команду условного скрипта. спасибо – Khalid

19

Конфигурационные файлы .ebextensions позволяют выполнять условную команду с помощью директивыпо команде. Затем команда запускается только в том случае, если тест является истинным (возвращает 0).

Пример .ebextensions/create_dir.config файла:

commands: 
    01_create_dir: 
    test: test ! -d "${DIR}" 
    command: mkdir "${DIR}" 

Другой пример (на самом деле испытания на EB) условно запустить сценарий, если каталог не существует:

commands: 
    01_intall_foo: 
    test: test ! -d /home/ec2-user/foo 
    command: "/home/ec2-user/install-foo.sh" 
    cwd: "/home/ec2-user/" 

Редкая документация от AWS здесь:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-commands

PS. Если вам просто нужно условно создать каталог, вы можете сделать это без условных, используя -p вариант для mkdir условно создать каталог, как так:

commands: 
    01_create_dir: 
    command: mkdir -p "${DIR}" 
+0

В своем примере на http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html они путают меня, используя 'test: '[!/usr/bin/python] && echo "python not installed" '' для условного запуска скрипта python. Разве это не запускает команду, если python _missing_? – oskarth

+0

mkdir -p - отличная идея. Спасибо –

+0

@oskarth. '!' В тесте делает проверку оператора if для существования этого пути, он читает «если не'/usr/bin/python' return false ». –