This document provides instructions for a Designate workshop including requirements and agenda. The requirements include bringing a USB drive with VirtualBox, Vagrant and a 30GB VM disk image. The agenda covers installing Designate, operations like creating and deleting domains and records, configuring Designate with Nova and Neutron for automatic DNS record updates, and how to contribute to Designate.
Professional Resume Template for Software Developers
Workshop Requirements and Designate Installation
1. Workshop Requirements
● Grab a USB key!
● A computer with:
○ 2+GB RAM
○ VirtualBox and Vagrant - Both included on USB drive
○ VM: 30GB disk image
○ Windows users need ssh client (putty, cygwin)
● Copy “DesignateInstall” from USB drive
● cd DesignateInstall
● vagrant up
● vagrant ssh
5. Ron Rickard
Sr. Cloud Engineer, eBay Inc.
rrickard@ebaysf.com
irc.freenode.net: rjrjr
6.
7. Are you ready?
● Installed:
○ VirtualBox and Vagrant - Both included on USB drive
● Copy “DesignateInstall” from USB drive
● cd DesignateInstall
● vagrant up
● vagrant ssh
8. Agenda
● Install
● Operations
● Nova + Neutron
● How to contribute
17. Server Operations
Designate REST API:
● Generate the Keystone token for the admin user:
○ source openrc.admin
○ . ./selectenv.sh
● List the servers:
○ ./listservers.sh
● Create the server:
○ ./createserver.sh ns.example.net.
○ ./listservers.sh
18. Server Operations (continued)
Designate client:
● Setup the environment for the admin user:
○ source openrc.admin
● List the servers:
○ designate server-list
● Create the server:
○ designate server-create --name ns.example.com.
○ designate server-list
● Delete a server:
○ designate server-delete <server-id for ns.example.net.>
○ designate server-list
● Delete the last server:
○ designate server-delete <server-id for ns.example.com.>
● Show designate shell:
○ designate
19. Domain Operations
● Setup the environment for the user1 user:
○ source openrc.user1
● List the domains:
○ designate domain-list
● Create the domain:
○ designate domain-create --name example.com. --email dns@example.
com
○ designate domain-list
○ dig @localhost example.com. soa
○ dig @localhost example.com. ns
● Setup the environment for the user2 user:
○ source openrc.user2
● List the domains:
○ designate domain-list
20. Domain Operations (continued)
● Setup the environment for the user3 user:
○ source openrc.user3
● List the domains:
○ designate domain-list
● Create the domain:
○ designate domain-create --name test.com. --email dns@test.com
○ designate domain-list
● Delete the domain:
○ designate domain-delete <domain-id for test.com.>
○ designate domain-list
21. Record Operations
● Setup the environment for the user2 user:
○ source openrc.user2
● List the records for the example.com. domain:
○ designate domain-list
○ designate record-list <domain-id for example.com.>
● Create the record:
○ designate record-create --name serverA.example.com. --type A --
data 1.2.3.4 <domain-id for example.com.>
○ designate record-list <domain-id for example.com.>
○ dig @localhost serverA.example.com.
● Setup the environment for the user1 user:
○ source openrc.user1
● List the records for the example.com. domain:
○ designate record-list <domain-id for example.com.>
22. Record Operations (continued)
● Setup the environment for the user3 user:
○ source openrc.user3
● List the records for the example.com. domain:
○ designate record-list <domain-id for example.com.>
● Setup the environment for the user1 user:
○ source openrc.user1
● List the records for the example.com. domain:
○ designate record-list <domain-id for example.com.>
● Delete the record:
○ designate record-delete <domain-id for example.com.> <record-id
for serverA.example.com.>
○ designate record-list <domain-id for example.com.>
25. What we are configuring
Database
Central
Backend PowerDNS
Nova / Neutron
Keystone API AMQP
User
Sink
26. Designate Sink and Notification Handlers
● Designate Sink consumes notification events from:
○ Nova
○ Neutron
○ possibly other services
● Designate Sink turns events into DNS operations.
● What events and what DNS operations are performed are determined by custom notification
handlers:
○ nova_fixed
○ neutron_floatingip
27. Nova Configuration Changes
● Enable notifications for Designate in nova.conf:
[DEFAULT]
notification_driver = nova.openstack.common.notifier.rpc_notifier
notification_topics = monitor
notify_on_state_change = vm_and_task_state
28. Neutron Configuration Changes
● Enable notifications for Designate in neutron.conf:
[DEFAULT]
notification_driver = neutron.openstack.common.notifier.
rpc_notifier
notification_topics = monitor
29. Designate Configuration Changes
● Enable Designate Sink in designate.conf:
[service:sink]
enabled_notification_handlers = nova_fixed, neutron_floatingip
● Enable Nova notification handler in designate.conf:
[handler:nova_fixed]
domain_id = <random uuid>
notification_topics = monitor
control_exchange = 'nova'
format = '%(display_name)s.%(domain)s'
31. Creating and Deleting VM
● Setup the environment for the user1 user:
○ source openrc.user1
● List the images:
○ nova image-list
● List the flavors:
○ nova flavor-list
● Create the VM instance:
○ nova boot testvm --image <image-id> --flavor <flavor-id>
○ nova list
● Show the records:
○ designate domain-list
○ designate record-list <domain-id for example.com.>
○ dig @localhost testvm.example.com.
32. Create and Delete VM (continued)
● Delete the VM instance:
○ nova delete testvm
○ nova list
● Show the records:
○ designate domain-list
○ designate record-list <domain-id for example.com.>
○ dig @localhost testvm.example.com.
35. Useful Links
General OpenStack Links:
How to Contribute Primer: https://wiki.openstack.org/wiki/How_To_Contribute
Gerrit Workflow Primer: https://wiki.openstack.org/wiki/Gerrit_Workflow
Join the OpenStack Foundation: https://www.openstack.org/join/
Code Review: https://review.openstack.org/
Designate Specific Links:
Bug Tracker: https://bugs.launchpad.net/designate
Feature Tracker: https://blueprints.launchpad.net/designate
Documentation: https://designate.readthedocs.org
DevStack: https://designate.readthedocs.org/en/latest/devstack.html
Git (Server): https://github.com/stackforge/designate
Git (Client): https://github.com/stackforge/python-designateclient
(Yes - These slides will be published online!)
36. Getting Involved - Bare Necessities
● Get a good IRC client.. You’ll need it.
○ Join #openstack-dns and introduce yourself :)
● Attend the weekly IRC meetings:
○ Wednesdays @ 17:00 UTC in #openstack-meeting-alt
○ Agenda - https://wiki.openstack.org/wiki/Meetings/Designate
● File a bug/blueprint for your idea - Then add it to the agenda…
○ It’s OK to only have a rough sketch of the idea - that’s usually enough to begin discussions.
● Sign the Contributors License Agreement
● Get familiar with Gerrit - We can’t accept patches outside of Gerrit (Gerrit enforce the CLA)
37. Plugin Interfaces
Designate has several plugin interfaces, where replacement/additional
implementations can be dropped in without the need to modify core code, these
can even be provided by out of tree Python modules, avoiding the need to fork for
private plugins.
● New API v1 Endpoints (v2 will eventually be pluggable)
● Storage Drivers (SQLAlchemy in the box)
● Backend Drivers (PowerDNS, NSD4, FreeIPA, DynECT, BIND9 (kinda..))
● Sink’s Notification Handlers
Full List: http://goo.gl/5ZwMzO
38. REST APIs
● Designate uses Flask for the v1 API, and Pecan for the v2
API.
● designate-api is intentionally a separate service in
designate, we’ve always had a DNS based “API” in mind.
● API v1 is in “maintenance mode” - We’re trying really hard
to not add new features here!
● API v2 is still experimental - We have some more changes
to simplify in the pipeline!
39. Central Service
● Designate’s “Core” service - If you’re not sure, it probably belongs in here
somewhere
● Designate’s other services are all intended to be lightweight, each doing as
little as possible - i.e. only what’s specific to the particular interface.