我有一个powershell脚本,它存在于厨师服务器上以便在远程Windows服务器上运行,如何从远程Windows服务器上的厨师服务器运行这个powershell脚本。
答案 0 :(得分:1)
厨师不会做这样的事情。首先,Chef Server永远不能直接远程访问服务器,它所做的只是存储数据。其次,厨师并不是真的做“现在在一个地方经营一件事”。我们提供像knife ssh
和knife winrm
这样的工作站工具作为简单的包装器,但它们并不适用于任何复杂的工具。 Chef-y方法是使用powershell_script
资源制作配方并运行脚本。
答案 1 :(得分:0)
这是否意味着厨师也在Windows服务器上运行? 如果是,为什么不使用Windows Ps工具中的psexec?
https://docs.microsoft.com/en-us/sysinternals/downloads/psexec
答案 2 :(得分:0)
以下是我对您要实现的目标的理解。如果我错了,请在评论中纠正我,我会更新我的答案。
如果不知道您正在尝试使用脚本实现什么,我知道的最佳解决方案是编写一本食谱并执行以下操作之一
单态文件:
cookbook_file '<destination>' do
source '<filename.ps>'
<other options>
end
可以在https://docs.chef.io/resource_cookbook_file.html
找到选项多态文件:
template '<destination>' do
source '<template.ps.erb>'
variables {<hash of variables and values>}
<other options>
end
可以在https://docs.chef.io/resource_template.html
找到选项powershell_script
,powershell_out!
或execute
。 powershell_out!
具有与shell_out!
命令相同的选项和功能,以及在收到命令的退出状态(如果需要)之前,收敛将暂停的额外优势。关于使用它的文档有点不稳定,所以花时间尝试使用它和谷歌搜索。https://docs.chef.io/resource_powershell_script.html https://docs.chef.io/resource_execute.html
您最终选择的最后一个选项可能是希望保护您的资源,条件是它不应该运行的时间,例如文件已经存在,设置了注册表项或者您的脚本改变了什么可以使用。如果你真的希望脚本执行每一次聚合,那么你可以跳过这一步,但这是代码味道,我敦促你重新考虑你的计划。
https://docs.chef.io/resource_common.html#guards
重要的是要注意,这不是详细列出如何在节点上运行powershell脚本,只是我见过的常见模式的集合。
希望这会有所帮助。