使用Chef为不同的Windows用户设置环境变量

时间:2018-06-19 13:58:19

标签: ruby windows environment-variables chef chef-recipe

如何使用Use Chef为不同的Windows用户设置环境变量?

我尝试使用Execute块,如下所示:

execute 'setx DUMMYENV' do
    command 'setx DUMMYENV "THISISDUMMY"'
    user "UserA"
end

但是这需要密码,我不希望在任何食谱中使用明文形式的密码,因此该解决方案似乎不可行。

我还考虑过要像这样使用registry_key做些事情:

registry_key 'HKEY_USERS\S-1-5-21-0123456789-012345678-...\Environment' do
   values [{name: 'DUMMYENV', type: :string, data: '1'},
           {name: 'ENVTEST', type: :string, data: 'TESTING'}
          ]
    action :create
end

唯一的问题是我不确定我要修改的每个用户帐户的SID是否会在计算机之间更改。我可能可以找到一种解决方案,以遍历可用的HKEY_Users并解析出我正在寻找的HKEY_Users,但这似乎很乏味。

我开始研究的另一个选项是windows_env,但是我没有做太多测试,也没有看到一个可靠的选项来指定用户。

最终目标是让Chef以管理员身份运行,从而为不同的用户设置不同的环境变量。厨师有什么简单的方法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您确实可以使用windows_env来做到这一点,尽管它尚未在文档中反映出来:https://github.com/chef/chef/blob/master/lib/chef/resource/windows_env.rb#L39

windows_env 'DUMMYENV' do
  value 'THISISDUMMY'
  user 'UserA'
end

请记住,如果您正在谈论使用环境变量的计划任务,则必须重新启动才能看到它。