2013-06-18 15 views
10

Chciałbym użyć do konfiguracji .ebextensions warunkowego, ale nie wiem, jak go używać, mój obecny przypadek to:Jak korzystać z warunkowego .ebextensions config (AWS Elastic Beanstalk)

Jeden. Zawartość konfiguracji ebextensions tworzy folder, a właściwie folder, który musi zostać utworzony, tylko jeden raz, ponieważ jeśli wdrażam aplikację po raz drugi lub dłużej, pojawia się błąd, a błąd mówi "folder już istnieje".

Muszę więc przyznać warunkowe, jeśli folder już istnieje, nie trzeba uruchamiać ponownie polecenia utworzenia folderu.

Jeśli ktoś ma jakąkolwiek wiedzę na temat tego, w jaki sposób można to osiągnąć, byłbym bardzo wdzięczny. Dziękuję Ci!

Odpowiedz

7

myślę, że jedynym sposobem na to jest z warunkami powłoki:

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

Zobacz większą przykład w jcabi-beanstalk-maven-plugin.

+0

tak pan rację, ja już zażądać AWS warunkowy nie jest obsługiwane w rozszerzeniu .ebextensions. Ach, dzięki za twoją sugestię, spróbuję najpierw. – Khalid

+0

btw, jak mam się dowiedzieć, czy [! -f "$ {DIR}"]; następnie mkdir "$ {DIR}" fi – Khalid

+0

Potrzebuję 3 warunków do konfiguracji dla 3 komend, 1) komendy trzeba sprawdzić czy istnieje już folder utworzony lub nie, 2) Umieszczę jeden skrypt liniowy w/etc/fstab , więc muszę sprawdzić, czy skrypt jest już utworzony, czy nie, 3) Muszę sprawdzić, czy folder jest zamontowany (zamontować) czy nie. będzie świetnie, gdybym mógł zrozumieć warunkowe polecenie skryptu. dzięki – Khalid

19

Pliki konfiguracyjne .ebextensions umożliwiają warunkowe wykonywanie poleceń przy użyciu dyrektywy test: dla polecenia. Następnie polecenie uruchamia się tylko wtedy, gdy test jest prawdziwy (zwraca 0).

Przykład .ebextensions/create_dir.config file:

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

Innym przykładem (właściwie testowany na EB) warunkowo uruchomić skrypt jeśli katalog nie istnieje:

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

Rzadki dokumentacja z AWS jest tutaj:

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

PS. Jeśli wystarczy warunkowo utworzyć katalog, można to zrobić bez instrukcji warunkowych, korzystając z opcji -p dla mkdir warunkowo utworzyć katalog tak:

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

W swoim przykładzie na http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html dezorientują mnie, używając 'test: '[!/usr/bin/python] && echo "python not installed" ", aby warunkowo uruchomić skrypt Pythona. Czy to nie uruchamia polecenia, jeśli python ma _missing_? – oskarth

+0

mkdir -p był świetnym pomysłem. Dzięki –

+0

@oskarth '!' W teście sprawia, że ​​test instrukcji if dla istnienia tej ścieżki, odczytuje "jeśli nie"/usr/bin/python' return false ". –

Powiązane problemy