DNSer

Gem Version

Ruby DSL for create DNS Zone file

template :google_app  do |host, code, params|

  TXT host, ('google-site-verification=' + code), :comment => "Google verification code"

  MX host, 'ASPMX.L.GOOGLE.COM.', priority: 1, comment: "GMail"
  MX host, 'ALT1.ASPMX.L.GOOGLE.COM.', priority: 5, comment: "GMail"
  MX host, 'ALT2.ASPMX.L.GOOGLE.COM.', priority: 5, comment: "GMail"
  MX host, 'ASPMX2.GOOGLEMAIL.COM.', priority: 10, comment: "GMail"
  MX host, 'ASPMX23.GOOGLEMAIL.COM.', priority: 10, comment: "GMail"
  TXT host, 'v=spf1 include:_spf.google.com ~all', comment: "GMail SPF"

  %w(mail doc).each do |sub|
    CNAME [sub, host].join('.'), 'ghs.googlehosted.com.'
  end
end

zone 'domain.ltd' do
  ttl 3600
  ns = NS 'ns1', 'ns1.dnsimple.com.'

  SOA host do
    nameserver ns
    email '[email protected]'
  end

  A IPAddr.new('127.0.0.1'), alias: :www

  A :dev, IPAddr.new('127.0.0.2')

  apply_google_app host, '6tTalLzrBXBO4Gy9700TAbpg2QTKzGYEuZ_Ls69jle8'

  SRV 'corp', 'calendar.abc.com.' do
    service '_caldavs'
    protocol :tcp
    port 8443
  end

  SRV 'calendar2.abc.com.', service: :caldavs, protocol: :tcp, port: 8443, weight: 0, priority: 1
end

Result:

$ORIGIN domain.ltd.
$TTL 3600
domain.ltd.                     IN SOA      ns1.domain.ltd. admin.domain.ltd. (20130803 3600 3600 3600 3600)
ns1                             IN NS       ns1.dnsimple.com.
@                               IN A        127.0.0.1
@                               IN TXT      "v=spf1 include:_spf.google.com ~all"                                   #GMail SPF
@                               IN MX       10 ASPMX23.GOOGLEMAIL.COM.                                              #GMail
@                               IN TXT      google-site-verification=6tTalLzrBXBO4Gy9700TAbpg2QTKzGYEuZ_Ls69jle8    #Google verification code
@                               IN MX       1 ASPMX.L.GOOGLE.COM.                                                   #GMail
@                               IN MX       5 ALT1.ASPMX.L.GOOGLE.COM.                                              #GMail
@                               IN MX       5 ALT2.ASPMX.L.GOOGLE.COM.                                              #GMail
@                               IN MX       10 ASPMX2.GOOGLEMAIL.COM.                                               #GMail
_caldavs._tcp.corp.domain.ltd.  IN SRV      0 0 8443 calendar.abc.com.
_caldavs._tcp.domain.ltd.       IN SRV      1 0 8443 calendar2.abc.com.
dev                             IN A        127.0.0.2
doc                             IN CNAME    ghs.googlehosted.com.
mail                            IN CNAME    ghs.googlehosted.com.
www                             IN CNAME    domain.ltd.