Jump to: navigation, search

Difference between revisions of "Designate/Atlanta/Workshop 1"

(Re-Start PowerDNS)
 
(16 intermediate revisions by the same user not shown)
Line 15: Line 15:
 
=== Install Designate ===
 
=== Install Designate ===
 
# Start the VM
 
# Start the VM
#: $ vagrant up
+
#:*vagrant up
 
# Log into the VM
 
# Log into the VM
#: $ vagrant ssh
+
#:* vagrant ssh
# Be super user
 
#: $ sudo su -
 
 
# Install Designate and its dependencies
 
# Install Designate and its dependencies
#: $ cd  /home/vagrant/designate
+
#:* cd  /home/vagrant/designate
#: $ apt-get -y build-dep python-lxml
+
#:* ''sudo apt-get -y build-dep python-lxml''
#: $ pip install -r requirements.txt -r test-requirements.txt
+
#:* ''sudo pip install -r requirements.txt -r test-requirements.txt''
#: $ python setup.py develop
+
#:*  sudo python setup.py develop
# Copy sample designate files and edit
+
# Make copies of designate config files from templates
#: $ cd etc/designate (/home/vagrant/designate/etc/designate)
+
#:* cd etc/designate (/home/vagrant/designate/etc/designate)
#: $ ls *.sample | while read f; do cp $f $(echo $f | sed "s/.sample$//g"); done
+
#:* ls *.sample | while read f; do cp $f $(echo $f | sed "s/.sample$//g"); done
# Now Edit designate.conf
+
# Copy over config file with pre-set values to designate.conf
 
#: (Replace contents of designate.conf with contents of file /home/vagrant/designate.conf.wkshp )
 
#: (Replace contents of designate.conf with contents of file /home/vagrant/designate.conf.wkshp )
#: $ cp /home/vagrant/designate.conf.wkshp ./designate.conf
+
#:* cp /home/vagrant/designate.conf.wkshp ./designate.conf
 
# Create directory for maintaining designate state information (this directory was referenced by 'state_path' variable in designate.conf file)
 
# Create directory for maintaining designate state information (this directory was referenced by 'state_path' variable in designate.conf file)
#: $ mkdir /var/lib/designate
+
#:* sudo mkdir /var/lib/designate
 
# Create directory for maintaining designate log files (this directory was referenced by 'logdir' variable in designate.conf file)
 
# Create directory for maintaining designate log files (this directory was referenced by 'logdir' variable in designate.conf file)
#: $ mkdir /home/vagrant/designate/log
+
#:* sudo mkdir /home/vagrant/designate/log
==== Configure the DNS server (PowerDNS) ====
+
==== Verify the DNS server (PowerDNS) config ====
In /etc/powerdns/pdns.d/pdns.local.gmysql, verify (set)  'gmysql-dbname='''pdns''''
+
Verify 'gmysql-dbname='''pdns'''' in /etc/powerdns/pdns.d/pdns.local.gmysql
* $ cat /etc/powerdns/pdns.d/pdns.local.gmysql
+
:* cat /etc/powerdns/pdns.d/pdns.local.gmysql
  
 
==== Verify PowerDNS is running on port 53 ====
 
==== Verify PowerDNS is running on port 53 ====
* $ netstat -tnlp (look for '''pdns_server-in''')
+
:* sudo netstat -tnlp (look for '''pdns_server-in''')
  
 
==== Test PowerDNS ====
 
==== Test PowerDNS ====
* $ dig @localhost openstack.com (You should get some response with status:SERVFAIL)
+
:* dig @localhost openstack.com (You should get some response with status:SERVFAIL)
  
 
==== Create, Initialize and sync the databases ====
 
==== Create, Initialize and sync the databases ====
 
===== The Designate database =====
 
===== The Designate database =====
* $ mysql -e 'CREATE DATABASE `designate` CHARACTER SET utf8 COLLATE utf8_general_ci;'
+
:* mysql -e 'CREATE DATABASE `designate` CHARACTER SET utf8 COLLATE utf8_general_ci;'
* $ designate-manage database init
+
:* sudo designate-manage database init
* $ designate-manage database sync
+
:* sudo designate-manage database sync
  
 
===== The PowerDNS database =====
 
===== The PowerDNS database =====
 
(Database already exists. Just init and sync)
 
(Database already exists. Just init and sync)
* $ designate-manage powerdns init
+
:* sudo designate-manage powerdns init
* $ designate-manage powerdns sync
+
:* sudo designate-manage powerdns sync
 
==== Start the Designate Central Service ====
 
==== Start the Designate Central Service ====
* $ designate-central &
+
:* sudo designate-central &
  
 
==== Start the Designate API Service ====
 
==== Start the Designate API Service ====
* $ designate-api &
+
:* sudo designate-api &
  
 
==== Check services are up ====
 
==== Check services are up ====
* $ ps aux | grep designate
+
:* ps aux | grep designate
  
 
====  Setup the Designate Keystone service and endpoints ====
 
====  Setup the Designate Keystone service and endpoints ====
* $ keystone service-create --name designate --type dns --description "Designate Service"
+
First set user 'admin' particulars then create service and endpoint
* $ keystone endpoint-create --service designate --publicurl http://127.0.0.1:9001/v1 --adminurl http://127.0.0.1:9001/v1 --internalurl http://127.0.0.1:9001/v1
+
:* source /home/vagrant/openrc.admin
 +
:* keystone service-create --name designate --type dns --description "Designate Service"
 +
:* keystone endpoint-create --service designate --publicurl http://127.0.0.1:9001/v1 --adminurl http://127.0.0.1:9001/v1 --internalurl http://127.0.0.1:9001/v1
  
 
=== Install Designate Client ===
 
=== Install Designate Client ===
* $ cd /home/vagrant/python-designateclient
+
:* cd /home/vagrant/python-designateclient
* $ pip install -r requirements.txt -r test-requirements.txt
+
:* sudo pip install -r requirements.txt -r test-requirements.txt
* $ python setup.py develop
+
:* sudo python setup.py develop
 
===== Test Designate Client =====
 
===== Test Designate Client =====
*$ cd /home/vagrant
+
:* cd /home/vagrant
*source openrc.admin
+
:* source openrc.admin
*$ designate --debug server-list
+
:* designate --debug server-list
  
 
=== Exercise the Designate API ===
 
=== Exercise the Designate API ===
# Test API locally on VM:  
+
=====Test API locally on VM: =====
#: $ curl http://localhost:9001
+
:* curl http://localhost:9001
# Test API from External Client (e.g. Google Chrome HTTP Client):
+
=====Test API from External Client (e.g. Google Chrome HTTP Client):=====
#: http://localhost:9001/v2/
+
:* http://localhost:9001/v2/
 
More Sample Helpful commands below in "Other Designate Workshop Command Lines"
 
More Sample Helpful commands below in "Other Designate Workshop Command Lines"
  
 
== Other Designate Workshop Command Lines ==
 
== Other Designate Workshop Command Lines ==
* $ killall designate-api  
+
* killall designate-api  
* $ killall designate-central
+
* killall designate-central
  
 
:Also, other log files exist in '''/var/log''' (e.g syslog for traces on services such as PowerDNS)
 
:Also, other log files exist in '''/var/log''' (e.g syslog for traces on services such as PowerDNS)
  
 
= Additional Notes on the workshop =
 
= Additional Notes on the workshop =
 
+
*PowerDNS was used as the backend rather than BIND as it is better tested as of now.   
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.
+
*A single node was used so that it is easier to control and easier for newbies to install.
 
 
= 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
 

Latest revision as of 15:46, 7 May 2014

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

Install Designate

  1. Start the VM
    • vagrant up
  2. Log into the VM
    • vagrant ssh
  3. Install Designate and its dependencies
    • cd /home/vagrant/designate
    • sudo apt-get -y build-dep python-lxml
    • sudo pip install -r requirements.txt -r test-requirements.txt
    • sudo python setup.py develop
  4. Make copies of designate config files from templates
    • cd etc/designate (/home/vagrant/designate/etc/designate)
    • ls *.sample | while read f; do cp $f $(echo $f | sed "s/.sample$//g"); done
  5. Copy over config file with pre-set values to designate.conf
    (Replace contents of designate.conf with contents of file /home/vagrant/designate.conf.wkshp )
    • cp /home/vagrant/designate.conf.wkshp ./designate.conf
  6. Create directory for maintaining designate state information (this directory was referenced by 'state_path' variable in designate.conf file)
    • sudo mkdir /var/lib/designate
  7. Create directory for maintaining designate log files (this directory was referenced by 'logdir' variable in designate.conf file)
    • sudo mkdir /home/vagrant/designate/log

Verify the DNS server (PowerDNS) config

Verify 'gmysql-dbname=pdns' in /etc/powerdns/pdns.d/pdns.local.gmysql

  • cat /etc/powerdns/pdns.d/pdns.local.gmysql

Verify PowerDNS is running on port 53

  • sudo netstat -tnlp (look for pdns_server-in)

Test PowerDNS

  • dig @localhost openstack.com (You should get some response with status:SERVFAIL)

Create, Initialize and sync the databases

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

(Database already exists. Just init and sync)

  • sudo designate-manage powerdns init
  • sudo designate-manage powerdns sync

Start the Designate Central Service

  • sudo designate-central &

Start the Designate API Service

  • sudo designate-api &

Check services are up

  • ps aux | grep designate

Setup the Designate Keystone service and endpoints

First set user 'admin' particulars then create service and endpoint

Install Designate Client

  • cd /home/vagrant/python-designateclient
  • sudo pip install -r requirements.txt -r test-requirements.txt
  • sudo python setup.py develop
Test Designate Client
  • cd /home/vagrant
  • source openrc.admin
  • designate --debug server-list

Exercise the Designate API

Test API locally on VM:
Test API from External Client (e.g. Google Chrome HTTP Client):

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

Other Designate Workshop Command Lines

  • killall designate-api
  • killall designate-central
Also, other log files exist in /var/log (e.g syslog for traces on services such as PowerDNS)

Additional Notes on the workshop

  • PowerDNS was used as the backend rather than BIND as it is better tested as of now.
  • A single node was used so that it is easier to control and easier for newbies to install.