Search code examples
rubywindowschef-infracookbookrecipe

how do I use the output of a shell command as a conditional value in a recipe


This is what I want to do:

  1. First check if a cert is installed on the server
  2. If not installed copy down the pfx to a temp location
  3. Install the pfx
  4. delete the pfx

How do I do this in a recipe?

Here is some semi-pseudo code:

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

How do I execute that line of PS code? Can I call the powershell_script resource directly somehow?


Solution

  • This is what I needed: Chef NOT_IF and ONLY_IF validation issue in Windows recipes

    I needed the guard_interpreter setting.

    Adding this to any resource calls that work with the pfx solve my issue:

    guard_interpreter :powershell_script
    not_if "My powershell code"