Définir des variables d’environnement pour l’exécution actuelle du chef-client

J’essaie d’utiliser chef pour installer OpenJDK, ainsi que pour télécharger Eclipse et installer quelques plugins en utilisant p2 director sur un nœud Windows 2008. OpenJDK s’installe et je règle mes variables d’environnement JAVA_HOME et l’ajoute au chemin. Cependant, cette modification ne prend effet que lorsque je ferme et rouvre PowerShell. L’exécution par le chef-client en a besoin dans la session en cours pour exécuter le directeur eclipse p2. Y a-t-il un moyen de le faire pour que je puisse exécuter le chef-client une seule fois?

Dans ma recette d’installation de openJDK I:

env "JAVA_HOME" do value 'C:\\Program Files\\Zulu\\zulu-8' end env "path" do delim ";" value '%JAVA_HOME%\\bin' action :modify end #For Command Prompt execute "setPathCMD" do command "set PATH=#{node['java']['path']}\\bin;%PATH%" end #For PowerShell powershell_script "setPathPS" do code <<-EOH $env:Path="#{node['java']['path']}\\bin;$env:Path" EOH end ENV['Path'] += ";C:\\Program Files\\Zulu\\zulu-8\\bin" 

Et dans la recette pour installer les plugins eclipse, j’ai:

 if not node['eclipse']['plugins'].empty? node['eclipse']['plugins'].each do |plugin_group| repo, id = plugin_group.first execute "eclipse plugin install" do command "#{node['eclipse']['unzip_location']}/eclipse/eclipse.exe -application org.eclipse.equinox.p2.director -noSplash -repository #{repo} -installIUs #{id}" action :run end end end 

Essayez d’utiliser setx:

 execute 'set java_home' do command "setx -m JAVA_HOME \"C:\\Program Files\\Zulu\\zulu-8\"" only_if { ENV['JAVA_HOME'] != 'C:\\Program Files\\Zulu\\zulu-8' } end # Set JAVA_HOME for this process ENV['JAVA_HOME'] = 'C:\\Program Files\\Zulu\\zulu-8' # do something similar for path... 

Adapté à partir du livre de recettes de visualstudio pour activer la restauration du package NuGet: https://github.com/daptiv/visualstudio/blob/master/recipes/nuget.rb

Mettez sur votre client.rb ou solo.rb :

 ENV['VAR'] = 'value'