2013-06-04 30 views
9

AWS Elastic Beanstalk: Development ve Production adreslerinde iki Ortam var.AWS Elastik Beanstalk: belirli bir Ortam için uzantılar

Bu .ebextensions/app.config sadece Production ortamında çalışmasını isterim. Bunu yapmanın herhangi bir yolu var mı?


app.config: Aklından şekilde bunu yapmak için basit bir yol var olduğunu sanmıyorum

container_commands: 
    01-command: 
    command: "crontab .ebextensions/cronjob" 
    leader_only: true 

cevap

14

TNICHOLS fikrine göre ben bir çözüm buldum.

app.config:

container_commands: 
    command-01: 
    command: "/bin/bash .ebextensions/crontab.sh" 
    leader_only: true 

crontab.sh: İyi bir ideia That`s

if [ "$PARAM1" == "MyAppEnv-Production" ]; then 
    crontab -l > /tmp/cronjob 

    #CRONJOB RULES 
    echo "00 00 * * * /usr/bin/wget http://localhost/cronexecute > /dev/null 2>&1" >> /tmp/cronjob 

    crontab /tmp/cronjob 
    rm /tmp/cronjob 
    echo 'Script successful executed, crontab updated.' 
else 
    echo 'This script is only executed in the production environment.' 
fi 
+1

Bana iyi görünüyor! – tnichols

+4

AWS konteyner komutlarına bir 'test' seçeneğini ekledi yüzden crontab.sh yapılan açıklamada leader_only sonra app.config taşındı edilebilirse: 'testi: '[ '$ PARAM1' == 'MyAppEnv-Üretim']'' – choobablue

2

. Yapılandırma dosyasını çalıştırabilir ve ikinci bir komut dosyasını (belki de cron.sh) çalıştırabilirsiniz. Cron.sh içinde ortam adını kontrol edebilir ve buna göre cronjobs'u ekleyebilirsiniz. Test etmedim, ama bence işe yaramalı.


Değiştir ortam PARAM1 değişken MyAppEnv-Production değer (ya da ne istiyorum):

+0

, Ill bunu deneyin! –

+0

.sh komutunda "Environment Name" işlevinin nasıl çalıştırılacağı hakkında bir fikriniz var mı? –

+0

Fikrimi, fikrinize göre kontrol edin;) Teşekkürler! –

İlgili konular