[chef] Re: Should I be using roles?


Chronological Thread 
  • From: Mark Harrison < >
  • To: " " < >
  • Subject: [chef] Re: Should I be using roles?
  • Date: Mon, 15 Sep 2014 21:37:22 -0400

> Now I go back to the mycompany-jenkins metadata.rb file and start adding
> more depends lines for hostname, openssh, fail2ban, postfix, java, and
> maven. Even though the mycompany-jenkins cookbook doesn't have anything in
> it yet, it depends on all these things because of the role. But the role
> doesn't even live inside the cookbook, why should the cookbook have to
> declare all those dependencies.

This seems to be the source of your confusion, and your question is
valid. Why _do_ you have to declare all of these unrelated
dependencies inside the mycompany-jenkins cookbook? If I'm
understanding you correctly, you can leave out hostname, openssh,
fail2ban etc from the metadata.rb of mycompany-jenkins and just leave
them in the run list of your base role, and things will just work. You
add your base role (or the mycompany_jenkins role, which has the base
role in its run list) to your node's run list, and chef will pull in
the relevant cookbooks during the chef run.

Now, you still need to make sure these cookbooks (hostname, openssh
and so on) get onto the chef server somehow, and I suspect this is
where your desire to put the cookbooks in an unrelated metadata.rb
stems from. One option (and the way things have been done in the past)
is to put these cookbooks in your chef repository and use knife
cookbook upload (or knife upload) to get them on the server. However,
it can be tricky to manage and update a repository like that, and this
is where berkshelf can help. To make use of berkshelf, you create a
Berksfile in the root of your chef repository, and add your cookbooks
to that file, then you can use berks install, berks update and berks
upload to get your cookbooks onto the server without inventing fake
dependencies.

None of the above precludes you using roles, or eschewing roles
altogether. There are some good reasons, mentioned by others in this
thread, for using role cookbooks, but you don't have to let your
current problem dictate that, and you will probably be perfectly happy
to continue to use roles in your repository.



Archive powered by MHonArc 2.6.16.

§