2013-06-04 20 views

Odpowiedz

14

Według TNICHOLS idei znalazłem rozwiązanie:


zmienić środowisko PARAM1 wartość zmiennej do MyAppEnv-Production (lub co chcesz).

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

Wygląda dobrze dla mnie! – tnichols

+4

AWS dodał opcję "testową" do poleceń kontenera, więc instrukcja if z pliku crontab.sh może zostać przeniesiona do pliku app.config po literze leader: 'test: '[" $ PARAM1 "==" MyAppEnv-Production "]'' – choobablue

2

Nie sądzę, istnieje prosty sposób to zrobić w sposób myślisz. Możesz uruchomić plik konfiguracyjny i wykonać drugi skrypt (być może cron.sh). Wewnątrz cron.sh możesz sprawdzić nazwę środowiska, a następnie odpowiednio dodać cronjobs. Nie testowałem tego, ale myślę, że to powinno zadziałać.

+0

That 'dobrych ideia, Ill spróbować to zrobić! –

+0

Czy masz pojęcie, jak uzyskać uruchomienie 'Nazwa środowiska' w skrypcie .sh? –

+0

Sprawdź moje rozwiązanie w oparciu o Twój pomysł;) Dzięki! –

Powiązane problemy