我真的希望我在这里遗漏了一些东西——因为我开始喜欢 Chef,但有些作品感觉非常愚蠢。
我有一个在特定凭据下运行的进程(服务)。这些凭据(用户/密码)在安装服务时输入一次,并且不再对人类可见。我希望该进程能够运行以下刀命令:
# Go kick the nodes and tell them to update now.
knife winrm "role:Xyz" "chef-client"
我不想写下密码或用户名。我希望它在我当前的上下文中运行,就像我在资源管理器中浏览到 UNC 路径\\ABC\DEF
<--Windows 足够聪明,可以知道我是谁并协商我的凭据。
另一个例子是当我的服务连接到 SQL Server 时。我可以选择不包括用户名/密码,而是简单地传递应用程序的凭据。
当然,Chef 不需要到处硬编码管理员密码。请帮忙。
我找到了自己的答案。简短的回答是“否”,该
knife
实用程序不支持这一点。但是,WinRM
它本身是否支持让您的凭据通过网络传输而无需重新输入用户名/密码的能力!因此,我将不得不使用该
knife
命令来查询 Chef 以查找具有特定角色的所有节点,但从那里,我将进入powershell
并执行以下命令:knife
这种事情是并行进行的,所以我只需要自己在powershell
.我知道这个问题已经很老了,但实际上,
knife-windows
安装 gem 后,您确实可以使用它knife winrm
来运行命令。要安装
knife-windows
gem 运行:然后在具有角色的所有机器上运行 Chef-Client,
xyz
您只需运行:假设
$AdminUser
和$AdminPassword
变量包含的值对目标计算机具有足够的 WinRM 权限。注意(如果使用 ChefDK):
根据您的设置,您可能需要使用:
和
取决于您使用的是嵌入式 Ruby 环境还是您自己的环境。