I have a recipe that is applied to servers in two different Chef organizations. In the recipe there is a cookbook_file command that I would like to apply a different file depending on which organization the server is a member of. I naively tried “if node.chef_organization”, but that returns “Undefined method or attribute chef_organization' onnode’”. Is there a way to do this?
Chef Client is pretty ignorant about the existence of organizations in general. This is a historical artifact of organizations having been a paid feature in the past. Probably the easiest way to get the info is to parse the Chef::Config.chef_server_url with the ruby URI library, then get the path and split it with the Pathname library. For example:
Thanks! I never would have thought of that. This works perfectly. For the record, here's the code that works (chef_server_url is set in knife.rb):
require 'uri'; require 'pathname'
org = Pathname(URI("#{Config.chef_server_url}").path).split.last.to_s
if org == "foo"
(do stuff)
else
(do other stuff)
end