2013-06-18 23 views
10

koşullu kullanmak nasıl .ebextensions yapılandırma için koşullu kullanmak isterdim ama, benim şimdiki harf nasıl kullanılacağını bilmiyorum: ait.ebextensions yapılandırma (AWS Elastik Beanstalk)

biri. ebextensions yapılandırma içeriği bir klasör oluşturmak, aslında sadece bir kez oluşturulmalıdır klasörü, çünkü ben ikinci kez veya daha fazla uygulama dağıtırsam hata alıyorum ve hata "klasör zaten var" dedi.

Bu nedenle, koşul zaten vermem gerekiyor, eğer klasör zaten mevcutsa, bir klasör oluşturma komutunu yeniden çalıştırmak gerekmez.

Bunun nasıl elde edilebileceğine dair herhangi bir fikir veya yön varsa, bunu takdir ediyorum. Teşekkür ederim!

cevap

7

Ben tek yolu kabuk koşullarına yapmanın düşünüyorum:

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

jcabi-beanstalk-maven-plugin daha büyük örneğe bakın.

+0

evet haklısın, ben zaten çenesinde sormak: Eğer sadece şartlı dizini oluşturmak gerekiyorsa , koşullu şöyle dizini oluşturmak için mkdir için -p seçeneğini kullanarak, Koşullamalar olmadan bunu yapabilir .extextensions içinde desteklenir. ah tamam, öneriniz için teşekkürler, ilk önce deneyeceğim. – Khalid

+0

btw, nasıl anlaşılacağı hakkında [? -f "$ {DIR}"]; o zaman mkdir "$ {DIR}" fi – Khalid

+0

3 komut için 3 koşulun ayarlanması gerekiyor, 1) komutun önceden oluşturulmuş veya bulunmayan bir klasör olup olmadığını kontrol etmesi gerekiyor, 2)/etc/fstab içine bir satır betiği koydum , bu yüzden betik zaten oluşturulmuş ya da değil kontrol etmeliyim, 3) kontrol etmek gerekir alredy (mount) ya da değil bir klasör. koşullu komut dosyasını anlayabilirsem harika olur. teşekkürler – Khalid

19

.ebextensions yapılandırma dosyaları, bir komut üzerindeki test: yönergesini kullanarak koşullu komut yürütülmesine izin verir. Daha sonra komut sadece test doğruysa çalışır (0 değerini döndürür).

Örnek .ebextensions/create_dir.config dosyası:

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

AWS gelen seyrek dokümanları buradadır: bir dizin yoksa (aslında EB üzerinde test)

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

başka örnek şartlı bir komut dosyası çalıştırmak için:

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

PS. koşullu değildir

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

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html adresindeki örneklerinde 'test:' kullanarak beni şaşırtdılar!/usr/bin/python] && echo "python yüklenmedi" ''koşullu olarak bir python betiğini çalıştırmak için. Python _missing_ ise komutu çalıştırmadı mı? – oskarth

+0

mkdir -p harika bir fikirdi. Teşekkürler –

+0

@oskarth '' 'testinde, bu yolun varlığı için if deyim testi yapar," eğer/usr/bin/python 'false döndürürse" okur. –

İlgili konular