如何使用 shell 命令的输出作为配方中的条件值
how do I use the output of a shell command as a conditional value in a recipe
这就是我想要做的:
- 首先检查服务器上是否安装了证书
- 如果未安装,请将 pfx 复制到临时位置
- 安装 pfx
- 删除 pfx
如何在食谱中执行此操作?
这是一些半伪代码:
unless "ls Cert:\LocalMachine\My\ | ?{$_.Subject -like '*#{cert_name}*'}"
cookbook_file cert_temp_path do
source cert_name
end
windows_certificate "c:/test/mycert.pfx" do
pfx_password 'MyPass!'
end
end
如何执行那行 PS 代码?我可以以某种方式直接调用 powershell_script 资源吗?
这不是您使用 Chef 的方式。 Chef 要求您重新考虑收敛行为,而不是程序步骤。在这种情况下,您的最终状态将是:
- 证书的说明书文件已复制到缓存路径。
- 证书已导入。
相信 cookbook_file
和 windows_certificate
本身是幂等和收敛的,这意味着它们只会在需要时处理。
这就是我需要的:Chef NOT_IF and ONLY_IF validation issue in Windows recipes
我需要 guard_interpreter 设置。
将此添加到与 pfx 一起使用的任何资源调用可解决我的问题:
guard_interpreter :powershell_script
not_if "My powershell code"
这就是我想要做的:
- 首先检查服务器上是否安装了证书
- 如果未安装,请将 pfx 复制到临时位置
- 安装 pfx
- 删除 pfx
如何在食谱中执行此操作?
这是一些半伪代码:
unless "ls Cert:\LocalMachine\My\ | ?{$_.Subject -like '*#{cert_name}*'}"
cookbook_file cert_temp_path do
source cert_name
end
windows_certificate "c:/test/mycert.pfx" do
pfx_password 'MyPass!'
end
end
如何执行那行 PS 代码?我可以以某种方式直接调用 powershell_script 资源吗?
这不是您使用 Chef 的方式。 Chef 要求您重新考虑收敛行为,而不是程序步骤。在这种情况下,您的最终状态将是:
- 证书的说明书文件已复制到缓存路径。
- 证书已导入。
相信 cookbook_file
和 windows_certificate
本身是幂等和收敛的,这意味着它们只会在需要时处理。
这就是我需要的:Chef NOT_IF and ONLY_IF validation issue in Windows recipes
我需要 guard_interpreter 设置。
将此添加到与 pfx 一起使用的任何资源调用可解决我的问题:
guard_interpreter :powershell_script
not_if "My powershell code"