How to deal with cookbook dependence for other Distro/OS's


#1

Hey,

So it seems some of the cookbooks from Opscode by default set depends statements in their metadata.rb for cookbooks that are required by a particular OS/Distro. In the case of say tomcat cookbook it sets jpackage as a dependence but you only need that for RPM base Distro’s. Since I am deploying on a Ubuntu box I am not included jpackage in the run list and that made it very unhappy. So I just removed it from the metadata.rb but I am just wondering if this is what is expected to be done by the cookbook provided by opscode?

Thanks
Zuhaib


#2

I’ve been using the “suggests” metadata field, but this also sucks.

We really want/need a platform-specific “depends” metadata.

like, maybe take a hash of platforms?

depends { “ubuntu” => [ “apt”, “ubuntu”, “reprepro”],
“redhat” => [ “yum”, “redhat”, “some_repo_software”] }

–AJ

On 21 October 2011 09:32, Zuhaib Siddique zuhaib.siddique@leapfile.com wrote:

Hey,

So it seems some of the cookbooks from Opscode by default set depends statements in their metadata.rb for cookbooks that are required by a particular OS/Distro. In the case of say tomcat cookbook it sets jpackage as a dependence but you only need that for RPM base Distro’s. Since I am deploying on a Ubuntu box I am not included jpackage in the run list and that made it very unhappy. So I just removed it from the metadata.rb but I am just wondering if this is what is expected to be done by the cookbook provided by opscode?

Thanks
Zuhaib


#3

Can’t you wrap the depends in an if block?

On Oct 20, 2011, at 3:57 PM, AJ Christensen wrote:

I’ve been using the “suggests” metadata field, but this also sucks.

We really want/need a platform-specific “depends” metadata.

like, maybe take a hash of platforms?

depends { “ubuntu” => [ “apt”, “ubuntu”, “reprepro”],
“redhat” => [ “yum”, “redhat”, “some_repo_software”] }

–AJ

On 21 October 2011 09:32, Zuhaib Siddique zuhaib.siddique@leapfile.com wrote:

Hey,

So it seems some of the cookbooks from Opscode by default set depends statements in their metadata.rb for cookbooks that are required by a particular OS/Distro. In the case of say tomcat cookbook it sets jpackage as a dependence but you only need that for RPM base Distro’s. Since I am deploying on a Ubuntu box I am not included jpackage in the run list and that made it very unhappy. So I just removed it from the metadata.rb but I am just wondering if this is what is expected to be done by the cookbook provided by opscode?

Thanks
Zuhaib


#4

On Oct 20, 2011, at 3:32 PM, Zuhaib Siddique wrote:

So it seems some of the cookbooks from Opscode by default set depends statements in their metadata.rb for cookbooks that are required by a particular OS/Distro.

Yup. I see that throughout all (or almost all) of the cookbooks.

In the case of say tomcat cookbook it sets jpackage as a dependence but you only need that for RPM base Distro’s. Since I am deploying on a Ubuntu box I am not included jpackage in the run list and that made it very unhappy. So I just removed it from the metadata.rb but I am just wondering if this is what is expected to be done by the cookbook provided by opscode?

I have the reverse problem – I’m on CentOS, but all (or almost all) of the cookbooks I pull down have massive Ubuntu/Debian dependencies built into them. I end up having to figure out how to port the cookbook over to CentOS before I can actually use it. Sometimes this isn’t a great deal of hassle, and sometimes it is quite a bit more hassle than I had anticipated.

I generally wrap all the obvious stuff in “case node[‘platform’] … when” statements. But, for example, there are some cookbooks that depend on things like apt, even though they don’t actually use apt to install packages – at least, not on CentOS.

I’ve tried to contribute all my changes back to the project, so that hopefully others won’t have to go through quite as much pain as I have done. But this is a young company and there is a lot of work to do.


Brad Knowles bknowles@ihiji.com
SAGE Level IV, Chef Level 0.0.1


#5

A trick I’ve used when in a rush:
If the dependency is only In the manifest, and you’re positive you don’t need eg jpackage on any of your nodes, you can just stub it out.
That is, create a new empty jpackage cookbook and upload that one.
Not a long-term solution, but it may help in the short term. YMMV

On Oct 20, 2011, at 10:32 PM, Zuhaib Siddique zuhaib.siddique@leapfile.com wrote:

Hey,

So it seems some of the cookbooks from Opscode by default set depends statements in their metadata.rb for cookbooks that are required by a particular OS/Distro. In the case of say tomcat cookbook it sets jpackage as a dependence but you only need that for RPM base Distro’s. Since I am deploying on a Ubuntu box I am not included jpackage in the run list and that made it very unhappy. So I just removed it from the metadata.rb but I am just wondering if this is what is expected to be done by the cookbook provided by opscode?

Thanks
Zuhaib