Skip to content

mirw/DNS-Charm

 
 

Repository files navigation

DNS As A Service

Overview

the DNS charm is unique in that it wraps several other services to provide a common gateway to automatically provisioning your DNS configuration. Regardless if you are setting up a BIND cluster, PowerDNS, or integrating with a third party provider (such as Amazon Rt53, or GoDaddy for example).

This charm provides DNS. By default the charm will deploy a configured Bind9 server, assuming it is the authoritative master of the configured domain(s).

Notes about architecture

The DNS charm implements an abstracted 'provider' concept, to ease integration of new services. Specific instructions how to extend/ add providers is outlined in docs/HACKING.md

Usage

juju deploy dns
juju set dns domain='superawesome.com'
juju add-relation myservice:programmable dns:programmable

Offline Environment Usage

juju set dns offline=true

You will need to branch the charm locally, and fill the required dependencies. Each dependency should be listed by the provider(s) specific documentation in docs/provider.md.

An example Heirarchy:

files
├── bind
│   ├── bind9_1%3a9.8.1.dfsg.P1-4ubuntu0.8_amd64.deb
│   ├── bind9utils_1%3a9.8.1.dfsg.P1-4ubuntu0.8_amd64.deb
│   └── pip
│       └── tldextract-1.3.1.tar.gz
└── core
    ├── python-pip_1.0-1build1_all.deb
    └── python-setuptools_0.6.24-1ubuntu1_all.deb

core is used to install the baseline dependencies for the bind service provider. This is agnostic to any specific provider, and required for the DNS charm itself to operate.

bind Specific to the bind provider, and exposes a sub-directory of pip for python modules consumed to make the bind provider function. The order of operation: the bind .deb files will be installed before the pip directory.

Known Limitations and Issues

The charm in it's current form does not support scale out operations. It's engineered towards a single Bind9 Authoritative master deployment for use in offline environments.

None of the 3rd party provider support has been added save for the provider architecture outlined in docs/HACKING.md

Configuration

domain: Used to configure the base domain provided by the DNS charm. Defaults to 'example.com'. This is used implicitly in the autogenerated relationship. eg: if you deploy redis, and relate it to the dns charm with the autogen relationship - it returns: redis0.example.com as the configured DNS.

offline: Predicate configuration option for determining if packages found in files/ are to be used for installation in an offline environment.

provider: Specify the underlying provider. Defaults to bind but can be

Contact Information

Dont forget to check the docs directory for additional resources!

Packages

No packages published

Languages

  • Python 100.0%