Reputation: 37
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
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