class Terrafying::Components::Zone
Attributes
fqdn[R]
id[R]
Public Class Methods
create(fqdn, options = {})
click to toggle source
# File lib/terrafying/components/zone.rb, line 18 def self.create(fqdn, options = {}) Zone.new.create fqdn, options end
find(fqdn)
click to toggle source
# File lib/terrafying/components/zone.rb, line 10 def self.find(fqdn) Zone.new.find fqdn end
find_by_tag(tag)
click to toggle source
# File lib/terrafying/components/zone.rb, line 14 def self.find_by_tag(tag) Zone.new.find_by_tag tag end
new()
click to toggle source
Calls superclass method
# File lib/terrafying/components/zone.rb, line 22 def initialize super end
Public Instance Methods
add_alias(name, config)
click to toggle source
# File lib/terrafying/components/zone.rb, line 97 def add_alias(name, config) add_alias_in(self, name, config) end
add_alias_in(ctx, name, config)
click to toggle source
# File lib/terrafying/components/zone.rb, line 101 def add_alias_in(ctx, name, config) fqdn = qualify(name) ctx.resource :aws_route53_record, tf_safe(fqdn), zone_id: @id, name: fqdn, type: 'A', alias: config end
add_cname(name, *records)
click to toggle source
# File lib/terrafying/components/zone.rb, line 126 def add_cname(name, *records) add_cname_in(self, name, *records) end
add_cname_in(ctx, name, *records)
click to toggle source
# File lib/terrafying/components/zone.rb, line 130 def add_cname_in(ctx, name, *records) fqdn = qualify(name) ident = fqdn.tr('.', '-') ctx.resource :aws_route53_record, ident, zone_id: @id, name: fqdn, type: 'CNAME', ttl: 300, records: records end
add_record(name, records, options = {})
click to toggle source
# File lib/terrafying/components/zone.rb, line 80 def add_record(name, records, options = {}) add_record_in(self, name, records, options) end
add_record_in(ctx, name, records, options = {})
click to toggle source
# File lib/terrafying/components/zone.rb, line 84 def add_record_in(ctx, name, records, options = {}) options = { type: 'A', ttl: 300, name: qualify(name) }.merge(options) ctx.resource :aws_route53_record, options[:resource_name] || tf_safe(options[:name]), { zone_id: @id, records: records }.merge(options.slice(:type, :ttl, :name, :records, :zone_id, :weight)) end
add_srv(name, service_name, port, type, hosts)
click to toggle source
# File lib/terrafying/components/zone.rb, line 110 def add_srv(name, service_name, port, type, hosts) add_srv_in(self, name, service_name, port, type, hosts) end
add_srv_in(ctx, name, service_name, port, type, hosts)
click to toggle source
# File lib/terrafying/components/zone.rb, line 114 def add_srv_in(ctx, name, service_name, port, type, hosts) fqdn = qualify(name) ident = tf_safe(fqdn) ctx.resource :aws_route53_record, "srv-#{ident}-#{service_name}", zone_id: @id, name: "_#{service_name}._#{type}.#{fqdn}", type: 'SRV', ttl: '60', records: hosts.map { |host| "0 0 #{port} #{host}" } end
create(fqdn, options = {})
click to toggle source
# File lib/terrafying/components/zone.rb, line 43 def create(fqdn, options = {}) options = { tags: {} }.merge(options) ident = tf_safe(fqdn) zone_config = { name: fqdn, tags: options[:tags] } if options[:vpc] zone_config[:vpc] = { vpc_id: options[:vpc].id } ident = tf_safe("#{options[:vpc].name}-#{ident}") end @fqdn = fqdn @id = resource :aws_route53_zone, ident, zone_config if options[:parent_zone] ns = (0..3).map { |i| output_of(:aws_route53_zone, ident, "name_servers.#{i}") } resource :aws_route53_record, "#{ident}-ns", zone_id: options[:parent_zone].id, name: fqdn, type: 'NS', ttl: '30', records: ns end self end
find(fqdn)
click to toggle source
# File lib/terrafying/components/zone.rb, line 26 def find(fqdn) zone = aws.hosted_zone(fqdn) @id = zone.id @fqdn = fqdn self end
find_by_tag(tag)
click to toggle source
# File lib/terrafying/components/zone.rb, line 35 def find_by_tag(tag) zone = aws.hosted_zone_by_tag(tag) @id = zone.id @fqdn = zone.name.chomp('.') self end
qualify(name)
click to toggle source
# File lib/terrafying/components/zone.rb, line 141 def qualify(name) "#{name}.#{@fqdn}" end