Chef - 在ruby_block中使用powershell_script

时间:2017-06-29 18:54:19

标签: ruby chef

是否可以在ruby_block中使用powershell_script? 我想在收敛阶段而不是编译阶段运行powershell脚本。 目前的代码不起作用:

ruby_block 'ruby block so that code is run during convergence phase and not compilation phase' do
   block do
      buildNumber = "123"
      powershell_script 'run powershell script' do
      environment ({'buildNumber' => buildNumber})
      code "path/to/script/script.ps1"
      end
   end
action :run
end

我知道你可以在ruby_block之外的powershell_script上使用一个guard来使它在收敛期间运行但是我需要在ruby块中定义的局部变量buildNumber。

2 个答案:

答案 0 :(得分:0)

以下代码对我有用:

x = Chef::Resource::PowershellScript.new('unzipper script',run_context)
    x.code 'D:/git/chef/cookbooks/java-8-upgrade/unzipper.ps1'
    x.environment ({'buildNumber' => buildNumber})
    x.run_action :run

答案 1 :(得分:0)

在简单的情况下,您可以使用powershell_out辅助方法。对于更复杂的情况,请创建自定义资源并使用普通资源。不要使用手动资源调用(Chef::Resource::Foo.new,因为我们明确不支持这一点,并且知道它会破坏事物。)