Jump to: navigation, search

Designate/Atlanta/Workshop 1

< Designate‎ | Atlanta
Revision as of 19:10, 29 April 2014 by Eankutse (talk | contribs)

Designate: Interactive Workshop - Install and Operate - Openstack Summit, May 2014

Designate provides DNSaaS services for OpenStack.

This interactive workshop will guide attendees on how Designate can be installed with PowerDNS. For the purposes of the workshop the various designate components will be installed on a single node. Once installed it shows some of the V1 and V2 APIs for domain and record management. The workshop will conclude by using a tool like dig to retrieve the added records from the PowerDNS backend, showing a fully functional by-hand deployment.

The workshop will also cover the steps for contributing to the development of Designate.

Several of the Designate contributors will be on hand during the workshop to help attendees work through the deployment.

See also: "Designate: An Overview of DNSaaS for Openstack" and “Designate: Deep Dive for Operators/Deployers”

Designate Installation Instructions - DRAFT

Verify VM and Openstack core components are installed and correctly configured

  1. verify python environment is installed
    $ which pip
    /usr/bin/pip
    $ which virtualenv
    /usr/bin/virtualenv
  2. verify RabbitMQ Server is installed and configured correctly:
  3. verify Glance Service is installed and configured correctly:
  4. verify Glance Client is installed and configured correctly:
  5. verify Keystone Service is installed and configured correctly:
  6. verify Keystone Client is installed and configured correctly:
  7. verify Neutron Service is installed and configured correctly:
  8. verify Neutron Client is installed and configured correctly:
  9. verify Nova Service is installed and configured correctly:
  10. verify Nova Client is installed and configured correctly:
  11. verify MySQL is installed: <cmd>
  12. verify MySQl is configured correctly:

Install Designate

  1. Start the VM
    $ vagrant up
  2. Log into the VM
    $ vagrant ssh
  3. Be super user
    $ sudo su -
  4. Install Designate and its dependencies
    $ cd /home/vagrant/designate
    $ apt-get build-dep python-lxml. Respond "Y" to question (or just hit enter)
    $ pip install -r requirements.txt -r test-requirements.txt
    $ python setup.py develop
  5. Copy sample designate files and edit
    $ cd etc/designate (/home/vagrant/designate/etc/designate)
    $ ls *.sample | while read f; do cp $f $(echo $f | sed "s/.sample$//g"); done
  6. Now Edit designate.conf
    (See section below for config values - "Designate Workshop Configuration")
  7. Create directory for maintaining designate state information (this directory was referenced by 'state_path' variable in designate.conf file)
    $ mkdir /home/vagrant/designate
  8. Create directory for maintaining designate log files (this directory was referenced by 'logdir' variable in designate.conf file)
    $ mkdir /home/vagrant/designate/log

Install the DNS server (PowerDNS)

Suppress default behavior of PowerDNS package creating it's own database, then install
  • $ echo "pdns-backend-mysql pdns-backend-mysql/dbconfig-install boolean false" | debconf-set-selections
  • $ DEBIAN_FRONTEND=noninteractive apt-get install pdns-server pdns-backend-mysql
(Hit <Enter> or enter 'Y' to question 'Do you want to continue [Y/n]?')
Verify the 'gmysql-dbname' entry in /etc/powerdns/pdns.d/pdns.local.gmysql points to appropriate database as ff:
  • gmysql-dbname=pdns

Create, Initialize and sync the databases

The Designate database
  • $ mysql -e 'CREATE DATABASE `designate` CHARACTER SET utf8 COLLATE utf8_general_ci;'
  • $ designate-manage database init
  • $ designate-manage database sync
The PowerDNS database
  • $ mysql -e 'CREATE DATABASE `pdns` CHARACTER SET utf8 COLLATE utf8_general_ci;'
  • $ designate-manage powerdns init
  • $ designate-manage powerdns sync

Start the Designate Central Service

  • $ designate-central&

Start the Designate API Service

  • $ designate-api&

Start PowerDNS

  • $ service pdns start

Check services are up

  • $ ps aux | grep designate

Exercise the Designate API

  1. Test API locally on VM:
    $ curl http://localhost:9001
  2. Test API from External Client (e.g. Google Chrome HTTP Client):
    http://localhost:9001/v2/

More Sample Helpful commands below in "Other Designate Workshop Command Lines"

[Sample] Designate Workshop Configuration

[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 = /home/vagrant/designate
Log directory
logdir = /home/vagrant/designate/log
Driver used for issuing notifications
notification_driver = designate.openstack.common.notifier.rpc_notifier
Notification Topics
notification_topics = notifications
root_helper = sudo

[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
[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
Enable Version 1 API
enable_api_v1 = True
Enable Version 2 API (experimental)
enable_api_v2 = True
Show the pecan HTML based debug interface (v2 only)
pecan_debug = False
Enabled API Version 1 extensions

enabled_extensions_v1 = diagnostics, quotas, reports, sync, touch

[service:agent]
Driver used for backend communication (e.g. bind9, powerdns)
backend_driver = powerdns
SQLAlchemy Storage
[storage:sqlalchemy]
Database connection string - to configure options for a given implementation
like sqlalchemy or other see below
database_connection = mysql://root@127.0.0.1:3306/designate
connection_debug = 100
connection_trace = False
sqlite_synchronous = True
idle_timeout = 3600
max_retries = 10
retry_interval = 10
PowerDNS Backend
[backend:powerdns]
database_connection = mysql://root@127.0.0.1:3306/pdns
connection_debug = 100
connection_trace = False
sqlite_synchronous = True
idle_timeout = 3600
max_retries = 10
retry_interval = 10


Other Designate Workshop Command Lines

  • $ killall designate-api
  • $ killall designate-central

Additional Notes on the workshop

I chose PowerDNS as the backend rather than BIND as it is more well tested as of now. I put in a single node – so that it is easier to control and easier for newbies to install. Also we talked about the workshop showing migration to Designate. However I think it is early at this point for us to talk about migration as we have not yet done a migrate with Designate.

Removed

  • REST API for domain & record management
  • Multi-tenant
  • Integrated with Keystone for authentication
  • Framework in place to integrate with Nova and Neutron notifications (for auto-generated records)
  • Support for PowerDNS and Bind9 out of the box