Chef Powershell从文件运行

5
使用Chef的powershell_script提供程序,我应该如何引用存储在Chef服务器上的文件,而不是在同一文件中定义代码?基本上,我如何从Chef客户端调用位于服务器上的.ps1文件?
2个回答

6
只要执行策略允许,您可以直接在powershell_script中调用未签名的PowerShell脚本。Chef在默认情况下允许此操作。
powershell_script "run some script" do
  code "c:/something/script.ps1"
end

如果你希望chef也部署这个脚本,你可以从cookbook的/files部分使用cookbook_file来实现。


啊,好的。所有示例只使用'code'来表示实际代码有点让我困惑,但我猜既然它只是运行powershell命令,脚本名称确实有效。但是,使用这个方法,我必须先将脚本放在机器上,然后手动清理它。虽然不是太麻烦,但能够运行远程脚本并让Chef处理临时创建对我来说会更好。 - Derongan
2
DSL 其实只是 Ruby 代码而已。你可以从任何地方将 code 的字符串拉入客户端。你可以从本地 cookbook 缓存中读取 File.read("script.ps1")。甚至可以使用 Net::HTTP.get('example.com', 'script.ps1') - Matt
我对 Ruby 不是很熟悉,但它似乎基本上做到了我想要的!谢谢! - Derongan
哦,你怎么使用“code”属性传递PowerShell参数呢? - JohnZaj
@JohnZaj 我不确定你能不能这样做。看起来 command 属性需要一个 String, Array 作为参数。我不确定为什么我建议在本地文件中使用 code 而不是 command - Matt

0
对于多行代码,在powershell_script资源的code参数的每一行末尾,不要忘记添加\n。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接