Экспортируйте огибающие переменные в задания внука

У меня есть ряд новомодных сценариев, сгенерированных диспетчером от Procfile, для запуска моего веб-сервиса и асинхронного рабочего очереди задачи. Путем диспетчер генерирует сценарии, следующие:

  • приложение
  • сеть приложения
  • app-web-1
  • рабочий приложения
  • app-worker-1

где "сеть приложения" и "рабочий приложения" установлены запуститься на стартовом "приложении", и "app-web-1" и "app-worker-1" установлены запуститься в стартовой "сети приложения" и "рабочем приложения" соответственно. Насколько я понимаю эта структура должна позволить Вам легко добавлять дальнейшие веб-и рабочие процессы, когда загрузка увеличивается, все еще управляя всем этим от задания "приложения" верхнего уровня.

Так, я хочу установить различные переменные среды в своих заданиях. Я могу, конечно, поместить их непосредственно в сценарии нижнего уровня, но было бы лучше поместить их в верхний уровень, таким образом, они только должны быть определены однажды. Я думал, что смогу сделать это в app.conf путем простого использования env и export:

env FOO=bar
export FOO

но это, кажется, не работает: хорошо, если я поместил его в среднее "веб-приложением" задание, но если я вставил "приложение" верхнего уровня, это не становится наследованным нижним уровнем "app-web-1". Так, моя вторая попытка состояла в том, чтобы поместить это в сценарий верхнего уровня и затем попытаться реэкспортировать в среднем только с export FOO, но это не работает также.

Действительно ли возможно сделать то, что я хочу, или я должен просто согласиться на определение переменных в нескольких местах?

4
задан 25 August 2014 в 17:19

1 ответ

Можно сделать это двумя способами: export переменная в среднем сценарии или сохраняет его в файле и получает его в самом низком сценарии.

Я протестировал этот пример на lubuntu 12.04:

myapp.conf является основным сценарием и экспортом MYAPP_FOO переменная:

# myapp - 
description "export environment variable"
env MYAPP_FOO=bar
export MYAPP_FOO

task
console log
script
    exec  echo "$MYAPP_FOO - myapp" 
end script

приложение-web.conf является средним сценарием, которые экспортируют переменную родителя и определяют и экспортируют MYAPP_FOO1

# app-web - 
description "export environment variable"
start on starting myapp
env MYAPP_FOO1=bar1
export MYAPP_FOO1
export MYAPP_FOO

task
console log
script  
   exec  echo "$MYAPP_FOO - app-web - $MYAPP_FOO1" 
end script

Наконец приложение-web1.conf печатает переменную:

# app-web1 - 
description "export environment variable"
start on starting app-web

task
console log
script  
   exec  echo "$MYAPP_FOO - app-web1 - $MYAPP_FOO1" 
end script

Я использовал sudo start myapp и результат в /var/log/upstart/app-web1.log :

bar - app-web1 - bar1

Другой подход должен определить Вашу переменную в файле и получить его, где Вам нужно:

# app-web1 - 
description "export environment variable"
start on starting app-web

task
console log
script  
   . /path/where/you/want/environmentFile
   exec  echo "$MYAPP_FOO - app-web1 - $MYAPP_FOO1" 
end script

Или можно создать environmentFile в среднем сценарии:

# app-web - 
description "export environment variable"
start on starting myapp
env MYAPP_FOO1=bar1

task
console log
script 
   env | grep MYAPP_ > /path/where/you/want/environmentFile 
   exec  echo "$MYAPP_FOO - app-web - $MYAPP_FOO1" 
end script
4
ответ дан 17 November 2019 в 14:45

Другие вопросы по тегам:

Похожие вопросы: