【发布时间】:2018-11-28 12:41:57
【问题描述】:
如何使用 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 并解析出我正在寻找的那些,但这似乎很乏味。
我已经开始研究的另一个选项是windows_env,但是我没有对其进行太多测试,也没有看到指定用户的可靠选项。
最终目标是以管理员身份运行 Chef 为不同用户设置不同的环境变量。有没有什么简单的方法可以用 Chef 做到这一点?
提前致谢!
【问题讨论】:
-
我在发布此内容后立即发现了这一点。他的第一个
windows_task中仍然有一个硬编码/纯文本密码。我知道用户将存在于机器上,但他们可能不会加载到配置单元中(未在 HKEY_Users 下列出)。我可以为它们中的每一个加载相应的配置单元,然后将其卸载,但不确定如何使用 Ruby 执行此操作。
标签: ruby windows environment-variables chef-infra chef-recipe