【问题标题】:Use Chef to Set Environment Variables for different Windows Users使用 Chef 为不同的 Windows 用户设置环境变量
【发布时间】: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


【解决方案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

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

【讨论】:

  • 这些环境变量将由在同一用户帐户下运行的服务使用。所以该服务应该只需要重新启动,对吗?感谢您的信息。测试后会回来的。
猜你喜欢
  • 2013-06-30
  • 1970-01-01
  • 2017-03-20
  • 2011-09-11
  • 1970-01-01
  • 2012-10-08
  • 2017-06-13
  • 2014-10-12
  • 2018-07-06
相关资源
最近更新 更多