0

我有一个 LWRP,其提供者操作看起来像这样。我想将环境变量传递给资源守卫:

action :create do
  powershell_script 'create file' do
    environment({'fileName' => new_resource.fileName})
    code <<-EOH
      New-Item $env:fileName
      EOH
    guard_interpreter :powershell_script
    not_if '(Test-Path $env:fileName)'
end

在上面的示例中,我想要做的是创建一个新文件,如果该文件尚不存在。当我执行此操作时,每次都会创建新文件。我希望第二次守卫会执行并且不会重新创建资源。我认为正在发生的事情是我无法像在代码块中那样使用警卫中的环境变量。

请注意,我的现实生活中的问题比这要复杂得多,而且我不只是在寻找一种方法来创建不存在的文件。我需要知道如何使用“not-if”块内的轻量级资源中指定的属性。

4

1 回答 1

0

它被掩埋了,但它在此处的文档中。只需这样做:

action :create do
  my_environment = 'fileName' => new_resource.fileName
  powershell_script 'create file' do
    environment my_environment
    code <<-EOH
      New-Item $env:fileName
      EOH
    guard_interpreter :powershell_script
    not_if '(Test-Path $env:fileName)', :environment => my_environment
  end
end
于 2014-10-29T22:18:31.913 回答