Geoff Harrison
Geoff Harrison

Reputation: 37

How to specify cookbook dependencies based on OS?

I am trying to find the best way of managing dependencies which are not available for all OS platforms. Our cookbook is cross-platform, it is aimed at both Linux and Windows systems. One of our recent requirements however, is to add in features that are only needed on Linux.

To do that normally, I would use a 'depends' line in the metadata.rb to specify a separate cookbook as being needed. For example:

depends 'hostfile_edit', '=0.1.2'

Our Chef system is split into two distinct orgs for security reasons - Windows and Linux. However, in this case the "hostfile_edit" cookbook is only available on the Linux org. Hence, when we run rake unit on Windows we get a failure as Chef is unable to reference this other cookbook. The rake unit runs perfectly when run on a Linux system. Similarly, when using the cookbook in a deployment there are failures on Windows, but not on Linux.

Upvotes: 0

Views: 270

Answers (1)

Thirumoorthi
Thirumoorthi

Reputation: 518

The answer lies in metadata.rb file, you can add like this

%w( aix amazon centos fedora freebsd debian oracle mac_os_x redhat suse opensuseleap ubuntu windows zlinux ).each do |os|
  supports os
end

You can read more about this are https://docs.chef.io/config_rb_metadata/

Upvotes: 0

Related Questions