2013-07-02 2 views
9

Theres una domanda simile a questo, ma il cant riescono a lavorare: Voglio impostare semplicemente una variabile env, quindi utilizzarlo:Come impostare la variabile di ambiente usando 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 

Ho anche provato ad utilizzare bash per "export JVMFLAGS='-blabla'", ma ancora si corre lo sh con nessuno impostato sulla variabile. C'è qualche problema che impedisce al mio sh script di controllare la variabile? ho potuto utilizzare il sh come un modello e sostituire l'occorrenza di JVMFLAGS ... Ma voglio verificare se c'è una soluzione migliore ..

risposta

7

Hai provato impostando la variabile ambiente attraverso rubino poco prima della eseguire blocco? Lo chef consiglia in realtà using ENV (vedere la nota in quella pagina).

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

Un'altra possibilità è quella di aggiungere JVMFLAGS al comando stesso.

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

Ho provato 'ENV [...]', tuttavia dopo aver eseguito 'vagrant provision', l'esecuzione di 'export MY_ENV_VAR' non mostra alcuna serie di variabili. –

+0

E non dovrebbe essere. Le variabili env sono impostate solo per il processo corrente e i relativi figli. –

+1

Stavo cercando come impostare un ** sistema ** env var - http://stackoverflow.com/questions/6284517/how-can-you-use-a-chef-recipe-to-set-an-environment- variabile/14917841 # comment34443452_14917841. Stavo cercando una risposta diversa. –