[chef] Re: Optional resource additions at converge-time?


Chronological Thread 
  • From: "Howley, Tom" < >
  • To: " " < >, " " < >
  • Subject: [chef] Re: Optional resource additions at converge-time?
  • Date: Tue, 31 Jul 2012 16:03:04 +0000
  • Accept-language: en-US

Hi KC,

 

Just joined the mailing list, found this discussion in the archive, which is the same problem that I’ve just encountered. It is concerned with the conditional addition of resources at converge-time, based on checks carried out during converge-time. Putting the check in a ruby block, storing the result in a variable and using this variable as the only_if/not_if condition in subsequent resources seems to work for me – see the pattern at the end of this mail.

 

In the example below, assuming that is_ready? function returns true, TestResource1 is skipped and TestResource2 is executed. In my scenario, the result of is_ready? is affected by actions carried earlier in this chef run. I also compared the use of ruby blocks vs. strings. In my tests, they both appear to be executed at converge time, which I think is different to what you experienced? In the example below, TestResource3 is skipped, but TestResource4 is executed because the prior directory resource has made the only_if condition to be true. TestResource5  is also skipped.

 

Hope this is of use.

 

Is there a better way to do this? I’d prefer to have all the resources nested under a single check of the condition, instead of using multiple only_if/not_if statements. I tried nesting resources under a ruby block, but I couldn’t see how to do it; could be my ignorance of correct syntax.

 

Thanks,

Tom

 

 

ruby_block "Pacemaker cluster configuration check" do

  block do

    $ready =is_ready?()

  end

end

 

# Testing use of ruby block in condition

execute "TestResource1" do

  not_if {$ready}

  command "echo Tomtest1"

  action :run

end

 

execute " TestResource2" do

  only_if {$ready}

  command "echo Tomtest2"

  action :run

end

 

# Testing use of string in condition

directory "/tmp/tomtestdir" do

  owner "root"

  group "root"

  action :delete

end

 

execute " TestResource3" do

  only_if "test -e /tmp/tomtestdir"

  command "echo Tomtest3"

  action :run

end

 

directory "/tmp/tomtestdir" do

  owner "root"

  group "root"

  action :create

end

 

execute " TestResource4" do

  only_if "test -e /tmp/tomtestdir"

  command "echo Tomtest4"

  action :run

end

 

execute " TestResource5" do

  not_if "test -e /tmp/tomtestdir"

  command "echo Tomtest5"

  action :run

end



  • [chef] Re: Optional resource additions at converge-time?, Howley, Tom, 07/31/2012

Archive powered by MHonArc 2.6.16.

§