2013-07-02 10 views
9

Tam podobne pytanie do tego, ale nie może zarządzać go do pracy: Chcę po prostu ustawić zmienną env, a następnie użyć go:Jak ustawić zmienną środowiskową za pomocą Chef?

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 

Ja również próbowałem przy użyciu bash "export JVMFLAGS='-blabla'" ale nadal działa sh bez żadnego ustawienia na zmienną. Czy jest jakiś problem, uniemożliwiający sprawdzanie zmiennej mój skrypt sh? mogę użyć sh jak szablon i zastąpienie wcześniejszego występowania o JVMFLAGS ... Ale chcę, aby sprawdzić, czy jest tam lepsze rozwiązanie ..

Odpowiedz

7

Czy próbowałeś ustawienie zmiennej środowiskowej poprzez Ruby tuż przed wykonać bloku? Szef kuchni faktycznie zaleca using ENV (Zobacz notatkę na tej stronie).

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

Inną możliwością jest dodanie JVMFLAGS do samego polecenia.

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

Próbowałem 'ENV [...]', jednak po uruchomieniu 'vagrant provision', uruchomienie' export MY_ENV_VAR' pokazuje brak zestawu zmiennych. –

+0

I nie powinno tak być. Zmienne env są ustawiane tylko dla bieżącego procesu i jego potomków. –

+1

Szukałem, jak ustawić ** system ** env var - http://stackoverflow.com/questions/6284517/how-can-you-use-a-chef-recipe-to-set-an-environment- zmienna/14917841 # comment34443452_14917841. Szukałem innej odpowiedzi. –

Powiązane problemy