Chef-solo or chef-client for local testing


#1

Hi,

I wanted to get folks opinions on what is better to use for local
infrastructure development chef-solo or chef-client?

I’m thinking it is nice to be able to have a fully isolated environment using
chef-solo locally with say a Vagrant box or any other vm offering of your
choice. The reason I say this is if you had all your developers using the same
production chef-server and same environment that there is a chance that you
could all stomp on each others toes. I know you can freeze the version but now
I have to keep maintaining my version list locally which I feel could be a
maintenance nightmare if you have a lot of cookbooks. My thought is you would
use chef-solo for local development and then after you commit your changes it
goes to a continuous integration environment where chef-client is used. In the
continuous integration environment it could use environment=development and
that environment could specify what version to use. After it has successfully
been tested in the continuous integration environment the production
environment file then gets a bump to use the new version that was just tested.
Anyone see any holes in this process or have any suggestions for a better
approach? If you think chef-client would be a better choice for local dev can
you offer up some ideas on how it would work with multiple users?

Looking forward to your responses.

I also have this question posted here:
https://groups.google.com/d/topic/chef-testing/3qZfJqOsycU/discussion

Thanks,
Jay


#2

Check out knife-flow for workflow.

It’s not uncommon to have a staging chef-server (or org on the platform) for testing integration, just like you have a staging app server.

I really value the extra data a chef server provides. Having my machines automatically converge to use the new graphite server because they can search is awesome. But if you don’t need those feature, solo keeps getting better. Either way, develop on the same system as you use in production and you’ll have less pain.


josephholsten.com

On Thursday, April 12, 2012 at 12:44, bosoxjay@gmail.com wrote:

Hi,

I wanted to get folks opinions on what is better to use for local
infrastructure development chef-solo or chef-client?

I’m thinking it is nice to be able to have a fully isolated environment using
chef-solo locally with say a Vagrant box or any other vm offering of your
choice. The reason I say this is if you had all your developers using the same
production chef-server and same environment that there is a chance that you
could all stomp on each others toes. I know you can freeze the version but now
I have to keep maintaining my version list locally which I feel could be a
maintenance nightmare if you have a lot of cookbooks. My thought is you would
use chef-solo for local development and then after you commit your changes it
goes to a continuous integration environment where chef-client is used. In the
continuous integration environment it could use environment=development and
that environment could specify what version to use. After it has successfully
been tested in the continuous integration environment the production
environment file then gets a bump to use the new version that was just tested.
Anyone see any holes in this process or have any suggestions for a better
approach? If you think chef-client would be a better choice for local dev can
you offer up some ideas on how it would work with multiple users?

Looking forward to your responses.

I also have this question posted here:
https://groups.google.com/d/topic/chef-testing/3qZfJqOsycU/discussion

Thanks,
Jay