Skip to content

Instantly share code, notes, and snippets.

@reset
Forked from lusis/berks-chef-ecosystem.md
Last active August 29, 2015 13:59
Show Gist options
  • Save reset/10712178 to your computer and use it in GitHub Desktop.
Save reset/10712178 to your computer and use it in GitHub Desktop.

brevity isn't my strongest skill but I'm seriously going to try here

Questions first

  • Is berkshelf becoming a core chef dep?

    JW: No, but it is going to be packaged with something called "ChefDK" which is going to be announced tomorow. It is an official tool that Chef (the organization) supports and distributes.

  • Is berkshelf becoming a core chef workflow dep?

    JW: No, you don't need to use it and you are free to invent any workflow you want

  • If so, why? (what gap is it filling?)

    JW: It isn't, but do you not know what Berkshelf is for? I can answer that for sure if that's the case. Let me know.

  • If so, is it being rolled into chef proper?

    JW: It's being rolled into that "ChefDK"

  • If not, why is it not being rolled into Chef proper?

Now why this all matters

You might wonder why people care? Excluding the fact that the Berkshelf workflow doesn't work for everyone, here's the biggest problem (at least to me):

JW: Berkshelf's workflow does work for everyone. I am so confident that I would stand on stage and have a live debate with a room full of people and I'm sure I'd come out standing. However, not everyone's code base is in the right place to adopt it. In typical Chef fashion, though, you aren't being forced into a way to do anything. The difference here is that you are now given a prescription if you want to take it.

Berks3 now requires an API endpoint

Do you see the concern here? No longer is chef-solo really solo. It's now "chef-solo + connect to some api endpoint to find deps for that cookbook you just snagged from the community site".

JW: The API server has nothing to do with Chef-Solo. It is used to generate an index of all cookbooks and all their dependencies to allow the resolution to be accurate and fast. If you use Chef-Solo, and not a Chef Server, you'll only use https://api.berkshelf.com if you intend on downloading cookbooks from the community site because it indexes the community site. If you don't use community cookbooks then you don't even need to keep the source "https://api.berkshelf.com" line in your Berksfile.

I'm not saying that any of this is the case but again, there's a mixed message here. Berkshelf (again regardless of opinion on the tool itself) is being baked into A LOT of stuff now. It also has this external dependency on an internet service. Saying that I have to run a service locally to use cookbooks from the community site? You have to see why that's a concerning issue.

JW: You do not need to run a service locally to use community cookbooks. It is hosted alongside the community site. The only people who need to run their own API server are people who use their Chef Servers as a cookbook artifact store or want to (and I don't recommend) have it index a Github organization of repositories or a Git repository.

I would wager that workflow and requirement is more unacceptable to folks than acceptable to folks. I don't want to have to fire up chef-zero (as awesome as it is) to run chef-solo and I certainly don't ALSO want to have to fire up chef-zero and a berkshelf-api endpoint just to run chef-solo.

JW: You will never need to start Chef-Zero or a Berks-API Server to run Chef-Solo. In fact, Berkshelf 3 made it easier to package cookbooks for distribution and usage with Chef-Solo. There is now a berks package command which will output the entire resolved dependency tree of cookbooks into a tar.gz file that can be given directly to Chef-Solo. chef-solo -r http://myshit.com/cookbooks.tar.gz

There's a lot of conflicting changes that have landed with zero communication from Ops..errr..Chef about what's going on and what this means long term.

@ichilton
Copy link

Looks like this is the ChefDK, referred to above: https://github.com/opscode/chef-dk

@adamhjk
Copy link

adamhjk commented Apr 15, 2014

Thanks, Jamie.

tl;dr - nobody is foisting berkshelf on you. You won't need a service to use Chef Solo, or anything else. If you want to use Berkshelf, we're making it easier to do, precisely so you don't wind up suffering from a pile of unreleased or difficult dependencies.

The Chef DK also has features like easily customizable generators, so it will be just as easy to have a supported workflow that has nothing to do with Berks, Test Kitchen, or anything else.

The Berks API resolver most likely becomes the standard community site API over time, or at least an extension of it. It is, and will be, open source, just like the rest of the code for the rebuilt community site.

The only changes that have landed were changes to Omnibus - which, I agree, we didn't communicate clearly enough with external folks who rely on the code.

@Jsnrkd
Copy link

Jsnrkd commented Apr 15, 2014

I updated my chef solo workflow for berkshelf 3. Here's an example if anyone needs a chef solo working example. https://github.com/Jsnrkd/chef-gm

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment