puppetlabs-toy-chest / puppetlabs-aws

Puppet module for managing AWS resources to build out infrastructure
Apache License 2.0
187 stars 216 forks source link

Route53 - Issue with the Route53_zone puppet type namevar!! #174

Open pjfoley opened 9 years ago

pjfoley commented 9 years ago

See https://github.com/puppetlabs/puppetlabs-aws/pull/157#issuecomment-104709347

Essentially if you want to support both public and private addressing for the same domain name you cannot based on the current namevar setup for the route53_zone type.

It would be good if we moved from having the title as the namevar for the type. For example move towards something like:

# Setup public DNS zone
route53_zone { 'External - puppetlabs.com.':
  zone => 'puppetlabs.com',
  ensure => present,
}

# Setup private DNS for puppetlabs.com
route53_zone { 'Internal - puppetlabs.com.':
  zone => 'puppetlabs.com,
  vpc_id => function_to_get_vpc_id('internal-vpc'),
  ensure => present,
}

# public
route53_a_record { 'public - api.puppetlabs.com.':
  a_record => 'api.puppetlabs.com',
  ensure => present,
  zone   => 'puppetlabs.com.',
  ttl    => 3000,
  values => ['66.66.66.66'],
}

# private
route53_a_record { 'internal - api.puppetlabs.com.':
  a_record => 'api.puppetlabs.com',
  ensure => present,
  zone   => 'puppetlabs.com.',
  vpc_id => function_to_get_vpc_id('internal-vpc'),
  ttl    => 3000,
  values => ['10.0.0.101'],
}

See this blog post for more context - http://grokible.com/aws-vpc-topics-effective-use-of-route-53-private-hosted-zones/

garethr commented 9 years ago

thanks, that's a good idea. I'm not quite sure on the implementation but we should be able to support both public and private records in the same manifest. No estimate on when we'll be able to add this I'm afraid but I'll update this issue when we do, or if anyone have time to work on a PR please do.