[chef] RE: Re: Enforce certain recipe in run_list


Chronological Thread 
  • From: Phil Oliva < >
  • To: " " < >
  • Subject: [chef] RE: Re: Enforce certain recipe in run_list
  • Date: Thu, 25 Sep 2014 15:53:23 +0000
  • Accept-language: en-US, en-CA

Daniel,

We're trying to enforce some governance on all the nodes that bootstrapped to 
our chef server. Coming from a large organization and trying to onboard many 
groups to our ha chef server infrastructure on our Opennebula based private 
cloud. 

We provided a single bash context script (coined "one init.sh script to rule 
them all") as a point of entry that groups can put in their vm template 
context along and with some standardized chef related template variables 
(chef_server_url, validator_key, bootstrap_json, chef_environment, etc..). 
Our bash script installs the recommended chef client package version (our 
team determines which version will get used) then runs chef-apply blocks to 
setup vm networking (nice because resources work on RH + Ubuntu ) and then 
setups up the /etc/chef/chef-client.rb properly and runs chef-client based on 
variables provided. This approach has worked well thus far.

We also wrote a hook for our hypervisors to cleanup node/client data when vms 
get deleted/recreated. Our chef server has a special admin account for that 
hypervisors can use to run pychef and manage it. 

That was all the logic we wanted to add to init.sh script. Anything that 
needs to be done to node after chef-client is assumed to be in a cookbook. 
Don't want to modify the init.sh very often (ideally never).

So I wanted to create a base cookbook that has a recipe that forces nodes 
checking every 15 minutes into server with chef-client runs using a cron or 
chef-client daemon. This recipe would need to survive a DR scenarios if our 
chef server ended up needing to be recreated and data loss was present. 
Example if node/client data not on server and vm still has client.pem (delete 
client.pem if getting "Failed to authenticate to .* with key 
/etc/chef/client.pem" message).

My question came about because I had an idea that I wanted our staging HA 
chef server to force people to run this recipe/cookbook even if they didn't 
specify it in their own run_list. This way people would learn if their 
cookbooks were truly idempotent (which is our end goal) in testing lab before 
it ended up in production. If people choose to proceed to production with 
non-idempotent cookbooks well then operators would need to know they would 
need to destroy vm and recreate any time they want cookbook rerun. 

Phil

----Original Message-----
From: Daniel DeLeo 
[mailto:
 On Behalf Of Daniel DeLeo
Sent: Wednesday, September 24, 2014 4:47 PM
To: 

Subject: [chef] Re: Enforce certain recipe in run_list



On Wednesday, September 24, 2014 at 10:03 AM, Phil Oliva wrote:

> Hi all,
>  
> Is there a way to enforce all nodes that bootstrap with chef-client to 
> certain chef-server run extra recipe(s) on top of their specified run list? 
> Basically want to create a base cookbook for my organization and ensure all 
> managed bootstrap nodes have run certain recipes from this cookbook.
>  
> Phil Oliva


To start this one over from the beginning, what do you mean by "ensure all 
managed bootstrap nodes have run certain recipes from this cookbook?” Are you 
worried that users in your organization will unintentionally create nodes 
without these recipes? Or that users will intentionally create nodes without 
these recipes? Do you need to manage the set of “required” base recipes over 
time? What kinds of users create new nodes, and how do they specify their 
customizations?

--  
Daniel DeLeo






Archive powered by MHonArc 2.6.16.

§