[chef] RE: Re: Re: Re: Re: Re: Is it possible to version control Chef Repository when working from management workstation?


Chronological Thread 
  • From: "Sullivan, Jon Paul" < >
  • To: " " < >
  • Subject: [chef] RE: Re: Re: Re: Re: Re: Is it possible to version control Chef Repository when working from management workstation?
  • Date: Wed, 11 Jul 2012 09:45:35 +0000
  • Accept-language: en-IE, en-US

> -----Original Message-----
> From: anatoly techtonik 
> [mailto:
> Sent: 05 July 2012 19:38
> To: 
> 
> Subject: [chef] Re: Re: Re: Re: Re: Is it possible to version control
> Chef Repository when working from management workstation?
> 
> I see. In fact I don't mind if knife executed commands on server and
> had ability to sync (or download) Chef Repository. I could write a
> wrapper script to around that, but at least I know the limitations,
> which is huge advancement. Thanks for replies.

If you want to download from chef to a structure that can be placed into 
source control I found the knife download plugin from knife-essentials to be 
the best so far.

https://github.com/jkeiser/knife-essentials

It relies on your cookbook_path being set correctly.  I use the following in 
my knife.rb for setting my cookbook path so that it is always correct for 
whatever directory I am in on the local filesystem.

# Dynamically derive our cookbook directory from where we are in the 
filesystem
base = Dir.pwd
begin
    cb_path = nil
    Dir.foreach(base) do |dir|
        if dir.eql? "cookbooks"
            cb_path = "#{base}/#{dir}"
            break
        end
    end
    base = File.dirname(base)
end while base != "/" and cb_path.nil?
if cb_path.nil?
    cb_path = "~/cookbooks"
end
# Set the cookbook path
puts "Setting cookbook_path to #{cb_path}" if debug
cookbook_path cb_path if not cb_path.nil? and not cb_path.empty?

> 
> My ideal setup is like:
> 1. Install HG on server side and make Chef Server automatically save
> Chef Repository filesystem tree there
> 2. Every knife command triggers hg transaction(config change,
> pre-commit hook script to validate structure, save config to couch,
> commit with log message)
> 3. Backup script pulls Chef Repository into some storage and sends me
> commit notifications about all activities
> --
> anatoly t.
> 
> 
> On Thu, Jul 5, 2012 at 9:11 PM, Ranjib Dey 
> < >
> wrote:
> > yes. they are not very tightly integrated.
> > For you the truth is git repo, but for chef its couch and for knife
> its
> > couch or local file system (depending upon the operation). As you see,
> > people try to automate any one of the step , or practice certain
> > methpds/workflows to use git as the master , and rest are based on
> that.
> >
> > Chef is modular, if you want you can actually pull out the knife edit
> > options and enforce knife from file as the only way to push data, and
> > configure the system against a repo, where folks  can push changes.
> The only
> > gotcha is the delay introduced .
> >
> >
> >
> > On Thu, Jul 5, 2012 at 11:32 PM, anatoly techtonik
> < >
> > wrote:
> >>
> >> On Thu, Jul 5, 2012 at 8:10 PM, Joshua Miller 
> >> < >
> >> wrote:
> >> > The real problem in your example is to get away from commands like
> >> >
> >> > knife data bag edit
> >> > And
> >> > knife role edit
> >> >
> >> > Use the chef-repo example and have roles and data bags in there.
> Edit
> >> > the roles locally and then use standard source control options.
> When your
> >> > ready to push to the chef server use the from file commands.
> >> >
> >> > knife data bag from file users jmiller.json
> >> >
> >> > knife role from file base.json
> >> >
> >> > Hope that helps
> >>
> >> Not really. I am trying to set a workflow and so far it is not very
> >> satisfying as I hoped to manage my configuration as a source code. =)
> >> I've made a cookbook with:
> >>   knife cookbook create newcook
> >>
> >> It is created in my local cookbooks directory. I've committed it,
> then
> >> uploaded to server.
> >> Now I need to create data bag.
> >>   knife cookbook data bag create newbag
> >>
> >> There are no files to commit. Neither before nor after. Your advice
> >> basically mean that I manually need to keep layout in my local
> version
> >> equal to the one the server maintains? That means I need to know the
> >> layout and put .json file where it should belong on the server side.
> >>   knife data bag from file users ~/chef-repo/data-bags/jmiller.json
> >>
> >> That's not the version control I used to.
> >>
> >>
> >> I've also noticed that knife doesn't synchronize my local cookbooks
> >> with remote. When I do
> >>   knife download newcook
> >> it is not downloaded to my local cookbooks path - I have to specify
> >> the path manually. Why?
> >
> >
Thanks, 
Jon-Paul Sullivan ☺ Cloud Services - @hpcloud

Postal Address: Hewlett-Packard Galway Limited, Ballybrit Business Park, 
Galway.
Registered Office: Hewlett-Packard Galway Limited, 63-74 Sir John Rogerson's 
Quay, Dublin 2. 
Registered Number: 361933
 
The contents of this message and any attachments to it are confidential and 
may be legally privileged. If you have received this message in error you 
should delete it from your system immediately and advise the sender.

To any recipient of this message within HP, unless otherwise stated, you 
should consider this message and attachments as "HP CONFIDENTIAL".



Archive powered by MHonArc 2.6.16.

§