[chef] RE: Re: RE: Re: LWRP inside LWRP Execution Question


Chronological Thread 
  • From: "Wes Parish" < >
  • To: < >
  • Subject: [chef] RE: Re: RE: Re: LWRP inside LWRP Execution Question
  • Date: Tue, 19 Nov 2013 12:20:35 -0600

After more investigation, it looks like I am running into a problem with the 
multiple Chef run-time phases, compile and convergence.  The fork idea has 
turned out to be bad because the resource run queue gets populated in the 
forked process and never makes it back to the parent.

I actually came across the same article earlier about the euid / egid wrt 
elevating privileges back to root (thus removing the need to fork).  I have a 
prototype right now that works as long as all LWRP code executes during the 
compile phase using .run_action() (this is ugly and doesn't support 
notifications and isn't very Chef like).

I tried wrapping the execution as another user in a ruby_block, but it looks 
like Chef still pulls it apart and adds the resources to the run queue during 
compile, only to be executed as root during convergence.

Is there a construct that can hold multiple resources (I was hoping 
ruby_block worked this way) that lives in the resource run queue as an atomic 
unit so I can apply user-switch code before the other 
atomically-grouped-resources execute?

Thanks again for the help!
Wes

-----Original Message-----
From: Daniel DeLeo on behalf of Daniel DeLeo
Sent: Tue 11/19/2013 10:48 AM
To: 

Subject: [chef] Re: RE: Re: LWRP inside LWRP Execution Question
 


On Tuesday, November 19, 2013 at 5:29 AM, Wes Parish wrote:

> Thanks for the quick reply Daniel. Unfortunately, I have tried the 
> use_inline_resources without success. I don't believe I am having issues 
> with notifications, but instead with LWRP resources not even executing. I 
> have tested this code on both Chef 10.18.2 and Chef 11.4.4 with the same 
> results. I have also tried creating a HWRP in the libraries directory of my 
> cookbook with the same problems. Any other ideas?
>  
>  

I can't figure out anything else from your code. You could try running it 
with -ldebug.
  
>  
> Suggestions for wrapping existing code (both native resources and LWRPs) to 
> execute as a different user would be helpful as well if there are any 
> examples out there that take a different route (other than fork, change uid 
> / gid and eval() a command string).
That's how you should do it. This article may be informative (even if the 
tone is a little aggro): 
http://timetobleed.com/5-things-you-dont-know-about-user-ids-that-will-destroy-you/
  
>  
> Thanks!
> Wes
>  
>  




--  
Daniel DeLeo


<<winmail.dat>>




Archive powered by MHonArc 2.6.16.

§