.. _zone: ======================== Managing cloud based DNS ======================== Yaybu can manage your DNS using a ``Zone`` part. A basic setup looks like this:: new Zone as mydns: driver: id: GANDI key: yourgandikey domain: example.com records: - name: mail data: 173.194.41.86 type: A - name: www data: www.example.org type: CNAME In this example, when you run ``yaybu apply`` this part will look for a zone named ``example.com`` and create it if it does not exist. It will ensure that all the ``records`` given exist and are of the right ``type`` and have the right ``data``. Options ======= Use the ``driver`` argument to find and initialize a libcloud DNS driver. You must specify an ``id`` so that the right service is targetted. Other variables include users and secrets and are described in the service-specific notes below. You must specify a ``domain``. If a zone for this domain doesn't exist it will be created. You must provide a list of DNS ``records`` to publish in the zone. At the very least you will specify a ``name`` and ``data`` but other options are available: ``name`` For example ``www`` or ``pop``. You do not need to specify a fully qualified domain name. ``type`` The type of DNS record - for example ``A`` or ``CNAME``. ``data`` The data to put in the DNS record. This varies between record types, but is typically an IP address for ``A`` records or a fully qualified domain name for a ``CNAME`` record. ``ttl`` How long this record can be cached for, specified in seconds. Specifying ``86400`` seconds would mean that if a DNS record was changed some DNS servers could be returning the old value for up to 24 hours. Supported services ================== Using ``libcloud`` to implement this part allows us to support a number of DNS services. Some of these receive more extensive real world testing than others and are listed in this section. Gandi ----- The driver id for `Gandi `_ is ``GANDI``:: new Zone as dns: driver: id: GANDI key: yourgandikey domain: example.com records: - name: www data: 192.168.0.1 TTL can only be set on records. Gandi supports the following record types: * NS * MX * A * AAAA * CNAME * TXT * SRV * SPF * WKS * LOC Route53 ------- The driver id for `Route53 `_ is ``ROUTE53``:: new Zone as dns: domain: example.com driver: id: ROUTE53 key: youraccountkey secret: youraccountsecret records: - name: www data: 192.168.0.1 TTL can only be set on records. Route53 supports the following record types: * NS * MX * A * AAAA * CNAME * TXT * SRV * PTR * SOA * SPF * TXT Community supported services ============================ By using `libcloud` to support the services in the previous section, the following services are also available: HostVirtual ----------- The driver id for `HostVirtual `_ is ``HOSTVIRTUAL``:: new Zone as dns: domain: example.com driver: id: HOSTVIRTUAL key: yourkey secret: yoursecret records: - name: www data: 192.168.0.1 TTL can be set by zone and by record. HostVirtual supports the following recort types: * A * AAAA * CNAME * MX * TXT * NS * SRV Linode ------ The driver id for `Linode `_ is ``LINODE``:: new Zone as dns: domain: example.com driver: id: LINODE key: yourlinodeikey secret: yourlinodesecret records: - name: www data: 192.168.0.1 TTL can be set by zone and by record. Linode supports the following record types: * NS * MX * A * AAAA * CNAME * TXT * SRV RackSpace --------- The driver id for `Rackspace DNS `_ is ``RACKSPACE_UK`` or ``RACKSPACE_US``:: new Zone as dns: domain: example.com driver: id: RACKSPACE_UK user_id: rackspace_user_id key: rackspace_secret_key records: - name: www data: 192.168.0.1 TTL can be set by zone and by record. Rackspace supports the following record types: * A * AAAA * CNAME * MX * NS * TXT * SRV Zerigo ------ The driver id for `Zerigo `_ is ``ZERIGO``:: new Zone as dns: domain: example.com driver: id: ZERIGO key: youraccountkey secret: youraccountsecret records: - name: www data: 192.168.0.1 TTL can be set by zone and by record. Zerigo supports The following record types: * A * AAAA * CNAME * MX * REDIRECT * TXT * SRV * NAPTR * NS * PTR * SPF * GEO * URL