Repositories and git


#1

Hi there,

This may seem like a really basic question, and I feel I’ve probably missed
some really elemental “aha moment” that most people get within 10 seconds,
but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks to it
locally? When I try it (via use of Knife) I just get an error saying
/srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a
(D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#2

Chef never uses git itself, you upload the cookbooks and other data to the chef-server via knife and clients interface with it from there (or, if you use solo, it just looks in a local folder of your choosing). If you want to use git to version things you are encouraged to (or hg, subversion, etc), but it isn’t tied in to Chef itself.

–Noah

On Jul 18, 2011, at 1:36 PM, Oliver Beattie wrote:

Hi there,

This may seem like a really basic question, and I feel I’ve probably missed some really elemental “aha moment” that most people get within 10 seconds, but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks to it locally? When I try it (via use of Knife) I just get an error saying /srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a (D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#3

In think the only time Git is invoked is when you use knife cookbook site vendor . It’s really only a shortcut for people that use Git since you could do all those steps by hand…

Sent from my iPad

On Jul 18, 2011, at 1:46 PM, Noah Kantrowitz noah@coderanger.net wrote:

Chef never uses git itself, you upload the cookbooks and other data to the chef-server via knife and clients interface with it from there (or, if you use solo, it just looks in a local folder of your choosing). If you want to use git to version things you are encouraged to (or hg, subversion, etc), but it isn’t tied in to Chef itself.

–Noah

On Jul 18, 2011, at 1:36 PM, Oliver Beattie wrote:

Hi there,

This may seem like a really basic question, and I feel I’ve probably missed some really elemental “aha moment” that most people get within 10 seconds, but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks to it locally? When I try it (via use of Knife) I just get an error saying /srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a (D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#4

And it should only do that if it detects it is in a git repo anyway.

–Noah

On Jul 18, 2011, at 2:01 PM, Jeffrey Hulten wrote:

In think the only time Git is invoked is when you use knife cookbook site vendor . It’s really only a shortcut for people that use Git since you could do all those steps by hand…

Sent from my iPad

On Jul 18, 2011, at 1:46 PM, Noah Kantrowitz noah@coderanger.net wrote:

Chef never uses git itself, you upload the cookbooks and other data to the chef-server via knife and clients interface with it from there (or, if you use solo, it just looks in a local folder of your choosing). If you want to use git to version things you are encouraged to (or hg, subversion, etc), but it isn’t tied in to Chef itself.

–Noah

On Jul 18, 2011, at 1:36 PM, Oliver Beattie wrote:

Hi there,

This may seem like a really basic question, and I feel I’ve probably missed some really elemental “aha moment” that most people get within 10 seconds, but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks to it locally? When I try it (via use of Knife) I just get an error saying /srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a (D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#5

So, if I understand right, if I want to install a cookbook to my repository,
I can only do this on the server machine itself, right?

On 18 July 2011 22:02, Noah Kantrowitz noah@coderanger.net wrote:

And it should only do that if it detects it is in a git repo anyway.

–Noah

On Jul 18, 2011, at 2:01 PM, Jeffrey Hulten wrote:

In think the only time Git is invoked is when you use knife cookbook site
vendor . It’s really only a shortcut for people that use Git since you
could do all those steps by hand…

Sent from my iPad

On Jul 18, 2011, at 1:46 PM, Noah Kantrowitz noah@coderanger.net
wrote:

Chef never uses git itself, you upload the cookbooks and other data to
the chef-server via knife and clients interface with it from there (or, if
you use solo, it just looks in a local folder of your choosing). If you want
to use git to version things you are encouraged to (or hg, subversion, etc),
but it isn’t tied in to Chef itself.

–Noah

On Jul 18, 2011, at 1:36 PM, Oliver Beattie wrote:

Hi there,

This may seem like a really basic question, and I feel I’ve probably
missed some really elemental “aha moment” that most people get within 10
seconds, but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks
to it locally? When I try it (via use of Knife) I just get an error saying
/srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a
(D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#6

I think this is one of the reasons Chef is confusing to approach for
newbies. Yes, the Getting Started wiki page tells you that git is optional.
The problem is that git has been added to the already large list of
tools/concepts you need consider, even if only to decide to ignore it.

Jeff

On Mon, Jul 18, 2011 at 3:46 PM, Noah Kantrowitz noah@coderanger.netwrote:

Chef never uses git itself, you upload the cookbooks and other data to the
chef-server via knife and clients interface with it from there (or, if you
use solo, it just looks in a local folder of your choosing). If you want to
use git to version things you are encouraged to (or hg, subversion, etc),
but it isn’t tied in to Chef itself.

–Noah

On Jul 18, 2011, at 1:36 PM, Oliver Beattie wrote:

Hi there,

This may seem like a really basic question, and I feel I’ve probably
missed some really elemental “aha moment” that most people get within 10
seconds, but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks to
it locally? When I try it (via use of Knife) I just get an error saying
/srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a
(D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#7

On Mon, Jul 18, 2011 at 2:15 PM, Oliver Beattie oliver@luckyvoice.com wrote:

So, if I understand right, if I want to install a cookbook to my repository,
I can only do this on the server machine itself, right?

No, you wouldn’t work with your chef-repo on your chef server.
Instead, check it out and work with it on your own local workstation
and then use knife and the chef-server API to upload cookbooks to the
chef server (knife cookbook upload <cookbook_name>). Maybe if you get
fancy, you’ll build an automated process to push your changes from
revision control onto the chef server, but you always use the API.
Unlike Puppet (at least when I last used it) the server itself never
reads from a local checkout of the repo but expects you to send it
things via the API that it caches in its own way.

KC


#8

If you want the cookbook to be used by the chef-client run on the server,
from your workstation, you do “knife cookbook upload COOKBOOKNAME” in your
chef repo to upload the cookbook. Of course on your workstation you need to
specify in the config file (knife.rb) about where you store those cookbooks
locally.

  • Nuo

On Mon, Jul 18, 2011 at 2:15 PM, Oliver Beattie oliver@luckyvoice.comwrote:

So, if I understand right, if I want to install a cookbook to my
repository, I can only do this on the server machine itself, right?

On 18 July 2011 22:02, Noah Kantrowitz noah@coderanger.net wrote:

And it should only do that if it detects it is in a git repo anyway.

–Noah

On Jul 18, 2011, at 2:01 PM, Jeffrey Hulten wrote:

In think the only time Git is invoked is when you use knife cookbook
site vendor . It’s really only a shortcut for people that use Git
since you could do all those steps by hand…

Sent from my iPad

On Jul 18, 2011, at 1:46 PM, Noah Kantrowitz noah@coderanger.net
wrote:

Chef never uses git itself, you upload the cookbooks and other data to
the chef-server via knife and clients interface with it from there (or, if
you use solo, it just looks in a local folder of your choosing). If you want
to use git to version things you are encouraged to (or hg, subversion, etc),
but it isn’t tied in to Chef itself.

–Noah

On Jul 18, 2011, at 1:36 PM, Oliver Beattie wrote:

Hi there,

This may seem like a really basic question, and I feel I’ve probably
missed some really elemental “aha moment” that most people get within 10
seconds, but I’m struggling to understand how repositories work with git.

For instance, is it possible to clone the repository and add cookbooks
to it locally? When I try it (via use of Knife) I just get an error saying
/srv/chef/{something} doesn’t exist. I’m assuming to get the benefits of a
(D)VCS this must be possible?

Thanks (and apologies if I’m being terribly dense).


#9

Okay, this explains things a lot better.

So, consider the case I want to add a community cookbook to my server. How
would I go about doing that?

On 18 July 2011 22:21, KC Braunschweig kcbraunschweig@gmail.com wrote:

On Mon, Jul 18, 2011 at 2:15 PM, Oliver Beattie oliver@luckyvoice.com
wrote:

So, if I understand right, if I want to install a cookbook to my
repository,
I can only do this on the server machine itself, right?

No, you wouldn’t work with your chef-repo on your chef server.
Instead, check it out and work with it on your own local workstation
and then use knife and the chef-server API to upload cookbooks to the
chef server (knife cookbook upload <cookbook_name>). Maybe if you get
fancy, you’ll build an automated process to push your changes from
revision control onto the chef server, but you always use the API.
Unlike Puppet (at least when I last used it) the server itself never
reads from a local checkout of the repo but expects you to send it
things via the API that it caches in its own way.

KC


#10

On Tue, Jul 19, 2011 at 4:44 AM, Oliver Beattie oliver@luckyvoice.com wrote:

Okay, this explains things a lot better.
So, consider the case I want to add a community cookbook to my server. How
would I go about doing that?

If your local repository is git:

knife cookbook site install COOKBOOK
knife cookbook upload COOKBOOK

This will install the cookbook in the chef-repo, handling all the cool
branching and tagging that you can do with git, then upload the
cookbook to the server. Somewhere in there you should probably read
the code to see what its going to do on your systems.

If you local repository is not git, then:

knife cookbook site download COOKBOOK
tar -zxvf COOKBOOK.tar.gz -C cookbooks
[ use your version control system to commit to the repo, do any
branch/merge/tag work etc ]
knife cookbook upload COOKBOOK


Opscode, Inc
Joshua Timberman, Director of Training and Services
IRC, Skype, Twitter, Github: jtimberman