i’m finding myself sprinkling my cookbooks with repeated code, and wondering
how i can do this differently. i’m in ec2. let’s say i want to define
subdomains keyed off of 2 things: a userdata setting and
placement_availability_zone:
if userdata contains “-e dev” and av zone matches us-east-1, subdomain is dev.abfabreunion.com.
if userdata contains “-e prod” and av zone matches us-east-1, subdomain is prod.abfabreunion.com.
and so on.
i’d want to make that derived subdomain available to all of my cookbooks. is
there a way to do that in chef without sprinkling my code with the following?
mrepo/attributes/default.rb:
if node[:ec2][:userdata] =~ /-e dev/ && node[:ec2][:placement_availability_zone] =~ /us-east-1/
node.default[:mrepo][:smtpserver] = "mail1.dev.abfabreunion.com"
elsif node[:ec2][:userdata] =~ /-e prod/ && node[:ec2][:placement_availability_zone] =~ /us-east-1/
node.default[:mrepo][:smtpserver] = "mail1.prod.abfabreunion.com"
elsif node[:ec2][:userdata] =~ /-e prod/ && node[:ec2][:placement_availability_zone] =~ /us-west-2/
node.default[:mrepo][:smtpserver] = "mail1.prod2.abfabreunion.com"
end
openvpn/attributes/default.rb:
if node[:ec2][:userdata] =~ /-e dev/ && node[:ec2][:placement_availability_zone] =~ /us-east-1/
node.default[:openvpn][:dhcpdomain] = "dev.abfabreunion.com"
elsif node[:ec2][:userdata] =~ /-e prod/ && node[:ec2][:placement_availability_zone] =~ /us-east-1/
node.default[:openvpn][:dhcpdomain] = "prod.abfabreunion.com"
elsif node[:ec2][:userdata] =~ /-e prod/ && node[:ec2][:placement_availability_zone] =~ /us-west-2/
node.default[:openvpn][:dhcpdomain] = "prod2.abfabreunion.com"
end
and so on.
thanks,
kallen