[chef] Re: Re: RE: Prevent resource from triggering multiple times in a single run


Chronological Thread 
  • From: Adam Leff < >
  • To: " " < >
  • Subject: [chef] Re: Re: RE: Prevent resource from triggering multiple times in a single run
  • Date: Sat, 29 Aug 2015 18:53:23 -0400

Title: RE: [chef] Prevent resource from triggering multiple times in a single run
I would place that "could be called by multiple recipes" resource into its own recipe, and then "include_recipe" that recipe from all the recipes who depend on it. Chef should not add that resource to the resource collection more than once, so even though 30 recipes included that one shared recipe, Chef should only perform those actions one time. 

Adam


On Aug 29, 2015, at 18:11, Mark Selby < "> > wrote:

Thanks for the response. I use guards all the time but it will not solve my issue here. The remote_file can change and when it does I need it to be updated. The guard would actually prevent that.

This is also a more generalized question. Say for example I have 30 different recipes that may want to download the same file. I know that as long at the 1st one works then I am good. I want to prevent the next 29 http head requests because in this case they are "expensive" and I know that I do not need to do them in this run anymore.

This could apply to any resource.


On 8/29/15 2:05 PM, Kevin Keane Subscription wrote:
" type="cite">

I think you want to use an only_if or not_if guard for this situation. If this really is a remote_file resource (rather than just an example), you may also want to look into the create_if_missing action instead of the create action; I don't know if that solves your specific problem, though.

Kevin Keane

The NetTech

http://www.4nettech.com

Our values: Privacy, Liberty, Justice

See https://www.4nettech.com/corp/the-nettech-values.html


-----Original message-----
From: Mark Selby  ">< >
Sent: Saturday 29th August 2015 13:42
To: ">
Subject: [chef] Prevent resource from triggering multiple times in a single run

remote_file “/var/tmp/somefile” do
     source “http://binfiles/somefile”
     owner “root”
     group “root”
     mode “0644”
     action :create
end

Lets just suppose that this is a somewhat expensive operation that may 
need to get called multiple times during a converge depending on what 
recipes the node is running. I would like to say “do not execute this 
resource if it has already been triggered during this run”

I would also not like to use a marker file if I can avoid it.

I know we have delayed execution but that is not what I want. I need 
this to trigger on the first call and then not again. Can I use the 
run_status or run_context to accomplish this?

Thanks!




Archive powered by MHonArc 2.6.16.

§