Please see :ref:’architecture-production’ for general production architecture notes.
$ sudo apt-get install mysql-server rabbitmq-server pdns-server pdns-backend-mysql
Note
Do the following commands as “root” or via sudo <command>
Create a user:
$ rabbitmqctl add_user designate designate
Give the user access to the / vhost:
$ sudo rabbitmqctl set_permissions -p "/" designate ".*" ".*" ".*"
Note
The following commands should be done using the mysql command line or similar.
Create the MySQL user
$ GRANT ALL ON designate.* TO 'designate'@'localhost' IDENTIFIED BY 'designate'
$ GRANT ALL ON powerdns.* TO 'powerdns'@'localhost' IDENTIFIED BY 'powerdns'
Create the database
$ CREATE DATABASE designate
$ CREATE DATABASE powerdns
Edit the config:
$ sudo editor /etc/powerdns/pdns.conf
Settings:
launch = gmysql
Edit the MySQL backend settings:
$ sudo editor /etc/powerdns/pdns.d/pdns.local.gmysql
Settings:
gmysql-host=localhost
gmysql-dbname=powerdns
gmysql-user=powerdns
gmysql-password=powerdns
$ sudo apt-get install libmysqlclient-dev
$ sudo apt-get install git python-dev python-pip
$ sudo apt-get build-dep python-lxml
$ git clone git://github.com/stackforge/designate designate
$ cd designate
In some cases you might want to pin the repository version to a specific version of the repository like a stable one.
Example for the Havana release:
$ git checkout stable/havana
$ sudo pip install -r requirements.txt
$ sudo pip install MySQL-python
$ sudo python setup.py develop
$ sudo cp -R etc/designate /etc/
$ ls /etc/designate/*.sample | while read f; do sudo cp $f $(echo $f | sed "s/.sample$//g"); done
Since we are not running packages some directories are not created for us.
$ sudo mkdir /var/lib/designate /var/log/designate
# Needed if you are running designate as a non root user.
$ sudo chown designate /var/lib/designate /var/log/designate
$ sudo editor /etc/designate/designate.conf
Copy or mirror the configuration from this sample file here:
[DEFAULT]
########################
## General Configuration
########################
# Show more verbose log output (sets INFO log level output)
verbose = True
# Show debugging output in logs (sets DEBUG log level output)
debug = True
# Top-level directory for maintaining designate's state
state_path = /var/lib/designate
# Log directory #Make sure and create this directory, or set it to some other directory that exists
logdir = /var/log/designate
# Driver used for issuing notifications
notification_driver = designate.openstack.common.notifier.rpc_notifier
# Use "sudo designate-rootwrap /etc/designate/rootwrap.conf" to use the real
# root filter facility.
# Change to "sudo" to skip the filtering and just run the comand directly
# root_helper = sudo
########################
## Service Configuration
########################
#-----------------------
# Central Service
#-----------------------
[service:central]
# Driver used for backend communication (e.g. fake, rpc, bind9, powerdns)
backend_driver = powerdns
# Maximum domain name length
max_domain_name_len = 255
# Maximum record name length
max_record_name_len = 255
#-----------------------
# API Service
#-----------------------
[service:api]
# Address to bind the API server
api_host = 0.0.0.0
# Port the bind the API server to
api_port = 9001
# Authentication strategy to use - can be either "noauth" or "keystone"
auth_strategy = keystone
# Enabled API Version 1 extensions
enabled_extensions_v1 = diagnostics, quotas, reports, sync
#-----------------------
# Keystone Middleware
#-----------------------
[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_tenant_name = service
admin_user = designate
admin_password = designate
########################
## Storage Configuration
########################
#-----------------------
# SQLAlchemy Storage
#-----------------------
[storage:sqlalchemy]
# Database connection string - to configure options for a given implementation
# like sqlalchemy or other see below
database_connection = mysql://designate:designate@localhost/designate
#connection_debug = 100
#connection_trace = True
#sqlite_synchronous = True
idle_timeout = 3600
max_retries = 10
retry_interval = 10
########################
## Backend Configuration
########################
#-----------------------
# PowerDNS Backend
#-----------------------
[backend:powerdns]
database_connection = mysql://powerdns:powerdns@localhost/powerdns
#connection_debug = 100
#connection_trace = True
#sqlite_synchronous = True
idle_timeout = 3600
max_retries = 10
retry_interval = 10
Initialize and sync the database schemas for Designate and PowerDNS:
$ designate-manage database-init
$ designate-manage database-sync
$ designate-manage powerdns database-init
$ designate-manage powerdns database-sync
For howto register Designate with Keystone you can check the code used in the devstack plugin.
There should be no version registered in the URL for the endpoint.
Central:
$ designate-central
API:
$ designate-api
You should now be able to create zones and use nslookup or dig towards localhost to query pdns for it.