2013-06-04 114 views

回答

14

根據TNICHOLS想法,我找到了一個解決方案:


變化的環境PARAM1變量值MyAppEnv-Production(或你想要的)。

的app.config:

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

crontab.sh:

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

對我很好! – tnichols

+4

AWS爲容器命令添加了一個'test'選項,因此可以在leader_only:'test:'[「$ PARAM1」==「MyAppEnv-Production」]''後將crontab.sh中的if語句移動到app.config中。 – choobablue

2

我不認爲有一個簡單的方法來做到這一點在你的思維方式。你可以運行配置文件並執行第二個腳本(可能是cron.sh)。在cron.sh內部,你可以檢查環境名稱,然後相應地添加cronjob。沒有測試過,但我認爲這應該工作。

+0

That's良好的IDEIA,生病嘗試做到這一點! –

+0

你有沒有想法如何在.sh腳本中運行'Environment Name'? –

+0

根據您的想法檢查我的解決方案;)謝謝! –

相關問題