I’m inferring that what I need is to set up my internal Git server as a Berkshelf API server? Are these still valid?
Chris
From: Torben Knerr [mailto:mail@tknerr.de]
Sent: Wednesday, April 08, 2015 1:11 AM
To: chef@lists.opscode.com
Subject: [chef] Re: Re: Re: RE: Re: RE: Re: RE: Re: How to setup Berkshelf to install ALL cookooks "recuresively', with only role cookbooks in it?
Oooops. I somehow entered the v2.0 Berkshelf docs without noticing...
Sorry for the disinformation :-/
Am 08.04.2015 02:11 schrieb "Drew Blessing" <Drew.Blessing@buckle.commailto:Drew.Blessing@buckle.com>:
chef_api in Berkshelf is deprecated. See GitHub - berkshelf/berkshelf: A Chef Cookbook manager
At this time I believe the Berkshelf API server or internal supermarket are required. We use Berkshelf API server and it works great.
On Apr 7, 2015, at 6:57 PM, Torben Knerr <mail@tknerr.demailto:mail@tknerr.de> wrote:
Nope, you don't have to install anything additional afaik, you can
simply use your Chef Server as an artifact source for Berkshelf.This is probably what you are looking for:
http://berkshelf.com/v2.0/#chef-api-locationYou can set that globally in your ~/.berkshelf/config.json to keep
your individual Berksfiles clean.Cheers, Torben
On Wed, Apr 8, 2015 at 1:43 AM, Fouts, Chris <Chris.Fouts@sensus.commailto:Chris.Fouts@sensus.com> wrote:
Yes I do have internal Chef 12 Enterprise server. So how can I set it up as a Berkshelf API server, by installing this in my Chef server GitHub - berkshelf/berkshelf-api: Berkshelf dependency API serverChris
-----Original Message-----
From: Torben Knerr [mailto:mail@tknerr.demailto:mail@tknerr.de]
Sent: Tuesday, April 07, 2015 7:17 PM
To: chef@lists.opscode.commailto:chef@lists.opscode.com
Subject: [chef] Re: RE: Re: RE: Re: How to setup Berkshelf to install ALL cookooks "recuresively', with only role cookbooks in it?Oh, right. I thought only your (2nd level) role cookbooks would be hosted internally. If you have internally hosted dependent cookbooks like "common-log" etc deep down in your dependency graph you must inlcude their inhouse git location in the top-level Berksfile. The nested Berksfiles are not evaluated.
Or, as Yoshi said, you can host your own inhouse Berkshelf API server.
And Chef Server is such a thing too. So if you have an internal Chef Server anyway, you could use that. If not, you could run GitHub - berkshelf/berkshelf-api: Berkshelf dependency API server directly. Or just repeat the internal locations in your top-level Berksfile (ugly but easiest).If anybody knows a server-less solution for that, I'd be interested too...
HTH, Torben
On Tue, Apr 7, 2015 at 10:27 PM, Fouts, Chris <Chris.Fouts@sensus.commailto:Chris.Fouts@sensus.com> wrote:
I've already tried it, and I get error below. In this example, I have an arqiva_rni_dev environment cookbook, which depends on linux_role role cookbook, and itself depends on common-log cookbook. I have ALL the correct version in my Git repo.Here's my Berksfile
source "https://supermarket.chef.io"
metadata
Community cookbooks
cookbook 'chef-client'
cookbook 'powershell'
cookbook 'push-jobs'Company cookbooks
cookbook 'linux_role', git: 'git@git-server:arqchefcookbooks/linux_role.git'
My metadata.rb is
name 'arqiva_rni_dev'
(snip)
depends 'linux_role', '1.0.2'My linux_role/metadata.rb has
depends 'common-log', '~> 0.1.0'
.....$ berks install
Resolving cookbook dependencies...
Fetching 'arqiva_rni_dev' from source at .
Fetching 'linux_role' from
git@git-server:arqchefcookbooks/linux_role.gitmailto:git@git-server:arqchefcookbooks/linux_role.git (at master) Fetching cookbook index from https://supermarket.chef.io...
Unable to satisfy constraints on package common-log, which does not
exist, due to solution constraint (arqiva_rni_dev = 0.1.0). Solution
constraints that may result in a constraint on common-log:
[(arqiva_rni_dev = 0.1.0) -> (linux_role = 1.0.2) -> (common-log =
0.1.0)], [(linux_role = 1.0.2) -> (common-log = 0.1.0)] Missing
artifacts: common-log Demand that cannot be met: (arqiva_rni_dev =
0.1.0) Unable to find a solution for demands: arqiva_rni_dev (0.1.0),
chef-client (>= 0.0.0), linux_role (1.0.2), powershell (>= 0.0.0),
push-jobs (>= 0.0.0)I can get rid of the error by including the common-log cookbook in my top-level Berksfile, but you're saying I should NOT have to do this.
Chris
-----Original Message-----
From: Torben Knerr [mailto:mail@tknerr.demailto:mail@tknerr.de]
Sent: Tuesday, April 07, 2015 4:05 PM
To: chef@lists.opscode.commailto:chef@lists.opscode.com
Subject: [chef] Re: RE: Re: How to setup Berkshelf to install ALL cookooks "recuresively', with only role cookbooks in it?Yep, you should expect this to work. Everything else would be a big surprise to me at least...
Have you tried it already, or are you just elaborating how to set things up?
Cheers, Torben
On Tue, Apr 7, 2015 at 9:44 PM, Fouts, Chris <Chris.Fouts@sensus.commailto:Chris.Fouts@sensus.com> wrote:
Note, these are NOT supermarket cookbooks, but rather our company
cookbooks on our own git server, which is not configured like a super market.Knowing this, should I still expect this to work?
Chris
From: Torben Knerr [mailto:mail@tknerr.demailto:mail@tknerr.de]
Sent: Tuesday, April 07, 2015 3:13 PM
To: chef@lists.opscode.commailto:chef@lists.opscode.com
Subject: [chef] Re: How to setup Berkshelf to install ALL cookooks
"recuresively', with only role cookbooks in it?Hey Chris,
Berkshelf should actually resolve the dependencies transitively.
In your top-level Berksfile you should only need the role cookbooks.
Once you run a 'berks install' there you should get a Berksfile.lock
which locks the whole dependency graph, including the transitive ones.Do you observe something different?
HTH,
TorbenAm 07.04.2015 19:23 schrieb "Fouts, Chris" <Chris.Fouts@sensus.commailto:Chris.Fouts@sensus.com>:
I want to setup an environment cookbook Berksfile with nothing but
role cookbooks in it, and the role cookbooks themselves will then
aggregate the specific cookbooks they need. For examplemyApp/Berksfile
cookbook ‘app1_role’, git: ‘git@git-server.domain.com:group/app1_role.git’
cookbook ‘app2_role’, git: ‘git@git-server.domain.com:group/app2_role.git’
myApp/metadata.rb
depends ‘app1_role’, ‘~> 1.0.0’
depends ‘app2_role’, ‘~> 1.0.0’
app1_role/metadata.rb
depends ‘cookbook1’, ‘= 1.0.0’
depends ‘cookbook2, ‘= 1.0.0’
app2_role/metadata.rb
depends ‘cookbook3’, ‘= 1.0.0’
depends ‘cookbook4, ‘= 1.0.0’
How can I set this up so I ONLY have the role cookbooks, but not the
individual cookbooks they need, in my environment cookbook’s
Berksfile, and when I do a berks install, it will auto-magically
install the cookbooks that my role cookbooks need? Currently, I also
have to include the cookbooks that my role cookbooks need in my environment Berksfile.Make sense?
Chris