Как установить переменную окружения с помощью Chef?


Есть аналогичный вопрос к этому, но не могу заставить его работать: Я хочу просто установить переменную env, а затем использовать ее:

execute "start zookeeper" do
    cwd "/opt/zookeeper-3.4.5/bin"
    command "./zkServer.sh start"
    environment "JVMFLAGS" => "-Xmx#{heap_jvm} -Xms#{heap_jvm}"
    user "root"
    action :run
end

Я также пробовал использовать bash для "export JVMFLAGS='-blabla'", но все равно он запускает sh с none, установленным в переменную. Есть ли какая-то проблема, мешающая моему скрипту sh проверять переменную? Я мог бы использовать SH как шаблон и заменить вхождение JVMFLAGS... Но я хочу проверить, есть ли лучшее решение..

1 9

1 ответ:

Вы пробовали установить переменную окружения через Ruby непосредственно перед блокомexecute ? Шеф-повар фактически рекомендует использовать ENV (см. Примечание на этой странице).

ENV['JVMFLAGS'] = "-Xmx#{heap_jvm} -Xms#{heap_jvm}"

Еще одна возможность-добавить JVMFLAGS в саму команду.

execute "start zookeeper" do
  [...]
  command "JVMFLAGS=-Xmx#{heap_jvm} -Xms#{heap_jvm} ./zkServer.sh start"
  [...]
end