如何在没有密码的情况下远程运行 chef-client(Windows 到 Windows)

如何在没有密码的情况下远程运行 chef-client(Windows 到 Windows)

我真的希望我在这里错过了一些东西——因为我开始喜欢 Chef,但有些作品感觉非常愚蠢。

我有一个在特定凭据下运行的进程(服务)。这些凭据(用户/密码)是在安装服务时输入的,现在对人类不再可见。我想要进程能够运行以下 knife 命令:

# Go kick the nodes and tell them to update now.
knife winrm "role:Xyz" "chef-client"

我不想把密码或用户名写下来。我希望它在我当前的上下文中运行,就像我在资源管理器中浏览 UNC 路径一样\\ABC\DEF<-- Windows 足够“聪明”,知道我是谁并协商我的凭据。

另一个例子是当我的服务连接到 SQL Server 时。我可以选择不包含用户名/密码,而只是传递应用程序的凭据。

Chef 肯定不需要到处都硬编码管理员密码。请帮忙。

答案1

我找到了自己的答案。简短的回答是“否”,该knife实用程序不支持此功能。但是,WinRM 本机支持通过网络传输您的凭证的功能,而无需重新输入用户名/密码!

因此,我必须使用命令knife来查询 Chef 以查找特定角色中的所有节点,但从那里,我进入powershell并执行以下命令:

Invoke-Command -ComputerName TheComputerName -ScriptBlock { chef-client }

knife并行执行这类事情,所以我只需要自己做就可以了powershell

答案2

我知道这个问题已经很老了,但实际上,knife-windows安装 gem 后你确实可以用它knife winrm来运行命令。

要安装knife-windowsgem,请运行:

gem install knife-windows

然后,要在所有具有该角色的机器上运行 Chef-Client,xyz只需运行:

knife winrm 'role:xyz' 'chef-client' --winrm-user $AdminUser --winrm-password $AdminPassword

假设$AdminUser$AdminPassword变量包含对目标机器的 WinRM 具有足够权限的值。

注意(如果使用 ChefDK):

根据您的设置,您可能需要使用:

chef gem install knife-windows

chef exec knife winrm 'role:xyz' 'chef-client' --winrm-user $AdminUser --winrm-password $AdminPassword

这取决于您使用的是嵌入式 Ruby 环境还是您自己的环境。

相关内容