[chef] Re: Re: in-house berks-api cookbook naming conflicts


Chronological Thread 
  • From: Torben Knerr < >
  • To: " " < >
  • Subject: [chef] Re: Re: in-house berks-api cookbook naming conflicts
  • Date: Wed, 7 Jan 2015 00:46:14 +0100

There was https://tickets.opscode.com/browse/CHEF-4027 once, but it
seems it had not been migrated to the Github issues (at least I
couldn't find it there).

And what's so bad about referencing Git repos from a Berksfile?

It's much more explicit and transparent than overloading namespaces
globally by pointing to a different "source" location.

Cheers,
Torben

On Tue, Jan 6, 2015 at 9:38 PM, Noah Kantrowitz 
< >
 wrote:
>
> On Jan 6, 2015, at 11:35 AM, Koert Kuipers 
> < >
>  wrote:
>
>> renaming internal cookbooks is not really an option, since it would also 
>> involve renaming all attributes and it would all together create a giant 
>> mess.
>>
>> it seems odd that i am forced to rename cookbook "x" just because someone 
>> managed to upload an "x" to the central supermarket, even if the "x" on 
>> the central supermarket is barely used.
>>
>> it is also unclear to me how we can go about modifying an existing 
>> cookbook. typically we do this and then a forced to temporarily use an 
>> in-house version (until our pullreq is accepted and incorporated in a 
>> release). for this we do not want to rename the cookbook since that is way 
>> too disruptive and the change is only temporary. again this problem would 
>> be solved if our inhouse supermarket could take precendence. with that 
>> option not available i looked at other alternatives. one would be to 
>> reference a git repo, since a git repo can take precendence over 
>> supermarket, but everyone says that is bad practice. ok then i thought, 
>> what if we modify cookbook "x" version 1.0.0 and publish it inhouse as 
>> cookbook "x" version 1.0.0-mycompany, and pin the version we depend on? 
>> again no luck, since chef and berks dont support such pre-release versions.
>
> Indeed, the minimal support for complex version numbers is a bit painful 
> here. There are a few major options:
>
> The most robust solution is to stop using "source 
> 'https://supermarket.chef.io'" in your Berksfiles in favor of your own 
> berks-api server pointed at your own Chef server and nothing else. This 
> allows you to create an isolated universe where you control the namespace 
> "entirely". The air quotes are because if you import any cookbooks from the 
> community site, you may run in to issues where things depend on the 
> community version of X instead of your incompatible version of X. This can 
> be worked around at times, but you'll either have to not use community 
> cookbooks as much, or eat the renaming pain on the community cookbook side 
> eventually.
>
> In cases where it is truly a temporary fork, I'll try really hard to keep 
> the logic in a wrapper cookbook via chef-rewind or monkey patching but that 
> isn't always going to be possible. If a fork has to happen, I'll generally 
> set the version to 99.99.99 so it is unlikely to ever collide with a real 
> release version, and then lock that version in the wrapper cookbook or 
> environment (or both).
>
> This in turn sometimes won't work if a ton of other cookbooks outside my 
> control have version dependencies on the things I'm modifying. At this 
> point a lot of people might be tempted to just leave the version number the 
> same or bump it by 0.0.1 and upload to their Chef server, but here be 
> dragons. When using non-git sources, Berks stores cookbooks by 
> "name-version", not content hash, so you risk effectively a self-induced 
> cache poisoning attack where some people might get your modified version in 
> their cache and others might get the unmodified community version, and the 
> only way you can really tell is when things break mysteriously despite 
> using the same Berksfile.lock. If you must do a local fork with the same 
> version number, definitely keep it in the Berksfile as a git reference so 
> you don't clobber your cache.
>
> If you don't like any of these options, sometimes discretion is the better 
> part of valor and you should just wait for a new release. For cookbooks 
> maintained by volunteers on their own time, offering to pay for some 
> development time can greatly accelerate things but tread lightly as some 
> devs might not like that idea. Good luck, you may need it :-)
>
> --Noah
>



Archive powered by MHonArc 2.6.16.

§