The Designate team maintains a fork of devstack with Designate integration.
Note
If you want to use local sources for development then you should consider using the contrib/vagrant folder in the repository.
Get a clean Ubuntu 16.04 VM or newer. DevStack “takes over”. Don’t use your desktop!
Clone DevStack inside the VM:
$ git clone https://opendev.org/openstack/devstack.git
Move to devstack
directory:
$ cd devstack
Create a local.conf config file:
[[local|localrc]]
# General DevStack Config
# =======================
ADMIN_PASSWORD=password
MYSQL_PASSWORD=password
RABBIT_PASSWORD=password
SERVICE_PASSWORD=password
SERVICE_TOKEN=password
# IP Address for services to bind to (Should match IP from Vagrantfile)
SERVICE_HOST=192.168.27.100
HOST_IP=$SERVICE_HOST
# Logging
#LOGFILE=/opt/stack/logs/stack.sh.log
VERBOSE=True
LOG_COLOR=True
# Disable all services except core ones
disable_all_services
enable_service rabbit mysql key
# Enable designate
enable_plugin designate https://opendev.org/openstack/designate
# Designate Devstack Config
# =========================
# Enable core Designate services
enable_service designate,designate-central,designate-api,designate-worker,designate-producer,designate-mdns
# Optional Designate services
#enable_service designate-agent
#enable_service designate-sink
# Backend Driver (e.g. powerdns, bind9. See designate.backend section of
# setup.cfg)
#DESIGNATE_BACKEND_DRIVER=bind9
# Agent Backend Driver (Used only when DESIGNATE_BACKEND_DRIVER=agent)
#DESIGNATE_AGENT_BACKEND_DRIVER=fake
# Pool Manager Cache Driver (e.g. noop, memcache, sqlalchemy. See
# designate.backend section of setup.cfg)
#DESIGNATE_POOL_MANAGER_CACHE_DRIVER=memcache
# mDNS Service DNS Port Number
#DESIGNATE_SERVICE_PORT_MDNS=5354
# Designate Backend Config
# ========================
# DynECT Backend
# NOTEs:
# - DynECT requires DESIGNATE_SERVICE_PORT_MDNS is set to "53"
# - DESIGNATE_DYNECT_MASTERS must be a Publicly reachable IP, pointed to mDNS
#DESIGNATE_DYNECT_CUSTOMER=
#DESIGNATE_DYNECT_USERNAME=
#DESIGNATE_DYNECT_PASSWORD=
#DESIGNATE_DYNECT_NAMESERVERS=ns1.p13.dynect.net,ns2.p13.dynect.net,ns3.p13.dynect.net,ns4.p13.dynect.net
#DESIGNATE_DYNECT_MASTERS=
# Akamai Backend
#DESIGNATE_AKAMAI_USERNAME=
#DESIGNATE_AKAMAI_PASSWORD=
#DESIGNATE_AKAMAI_NAMESERVERS=a5-64.akam.net,a11-65.akam.net,a13-66.akam.net,a14-64.akam.net,a20-65.akam.net,a22-66.akam.net
#DESIGNATE_AKAMAI_MASTERS=
# Designate D2D Backend
# NOTEs:
# - DESIGNATE_D2D_ALSO_NOTIFIES needs to be set to the source mdns ip:port in
# order for designate to receive the proper NOTIFY
# - DESIGNATE_D2D_* credentials should be setup either to the source keystone
# or the destination
#DESIGNATE_D2D_MASTERS=
#DESIGNATE_D2D_ALSO_NOTIFIES=
#DESIGNATE_D2D_NAMESERVERS=
# Authentication options
#DESIGNATE_D2D_KS_VERSION=3
#DESIGNATE_D2D_AUTH_URL=
#DESIGNATE_D2D_USERNAME=
#DESIGNATE_D2D_PASSWORD=
# Keystone V2
#DESIGNATE_D2D_TENANT_NAME=${DESIGNATE_D2D_TENANT_NAME:-}
#DESIGNATE_D2D_TENANT_NAME=${DESIGNATE_D2D_TENANT_ID:-}
# Keystone V3
#DESIGNATE_D2D_PROJECT_NAME=
#DESIGNATE_D2D_PROJECT_DOMAIN_NAME=
#DESIGNATE_D2D_USER_DOMAIN_NAME=
# Designate Misc Config
# =====================
# Enable a Notification Driver (e.g. for Ceiliometer)
#DESIGNATE_NOTIFICATION_DRIVER=messaging
# Set Notification topics
#DESIGNATE_NOTIFICATION_TOPICS=notifications
# Set coordination service URL (e.g. kazoo://localhost/)
#DESIGNATE_COORDINATION_URL=
# Other Devstack Config
# =====================
# Optional TLS Proxy
#enable_service tls-proxy
# Optional Tempest (Recommended)
enable_service tempest
# Optional Rally
#enable_plugin rally https://opendev.org/openstack/rally.git master
# Optional Horizon
#enable_service horizon
# Optional Glance
#enable_service g-api,g-reg
# Optional Nova
#enable_service n-api n-cpu n-net n-cond n-sch n-novnc
# Optional Neutron
#disable_service n-net
#enable_service q-svc q-agt q-dhcp q-l3 q-meta
Run DevStack:
$ ./stack.sh
See the status of all Designate processes
$ sudo systemctl status devstack@designate-*.service
See the Using Systemd in DevStack home page for more options.
Querying Logs
$ sudo journalctl -f --unit devstack@designate-*.service
See the Querying Logs home page for more options.
Load credentials into the shell:
$ source openrc admin admin # For the admin user, admin tenant
$ source openrc admin demo # For the admin user, demo tenant
$ source openrc demo demo # For the demo user, demo tenant
Try out the openstack client:
$ openstack zone create --email admin@example.net example.net.
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| action | CREATE |
| attributes | |
| created_at | 2017-11-15T04:48:40.000000 |
| description | None |
| email | admin@example.net |
| id | f34f835b-9acc-4930-b6dd-d045c15da78a |
| masters | |
| name | example.net. |
| pool_id | 794ccc2c-d751-44fe-b57f-8894c9f5c842 |
| project_id | 9d0beaef253a4e14bd7025dc30c24f98 |
| serial | 1510721320 |
| status | PENDING |
| transferred_at | None |
| ttl | 3600 |
| type | PRIMARY |
| updated_at | None |
| version | 1 |
+----------------+--------------------------------------+
$ openstack recordset create --records '127.0.0.1' --type A example.net. www
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| action | CREATE |
| created_at | 2017-11-15T04:51:27.000000 |
| description | None |
| id | 7861e600-8d9e-4e13-9ea2-9038a2719b41 |
| name | www.example.net. |
| project_id | 9d0beaef253a4e14bd7025dc30c24f98 |
| records | 127.0.0.1 |
| status | PENDING |
| ttl | None |
| type | A |
| updated_at | None |
| version | 1 |
| zone_id | f34f835b-9acc-4930-b6dd-d045c15da78a |
| zone_name | example.net. |
+-------------+--------------------------------------+
$ openstack recordset list f34f835b-9acc-4930-b6dd-d045c15da78a
+--------------------------------------+------------------+------+---------------------------------------------------------------------+--------+--------+
| id | name | type | records | status | action |
+--------------------------------------+------------------+------+---------------------------------------------------------------------+--------+--------+
| d0630d94-94d8-43fc-93e8-973fbec7531e | example.net. | SOA | ns1.devstack.org. admin.example.net. 1510721487 3510 600 86400 3600 | ACTIVE | NONE |
| 31a313dc-c322-4dc0-ba53-79c039d7f09f | example.net. | NS | ns1.devstack.org. | ACTIVE | NONE |
| 7861e600-8d9e-4e13-9ea2-9038a2719b41 | www.example.net. | A | 127.0.0.1 | ACTIVE | NONE |
+--------------------------------------+------------------+------+---------------------------------------------------------------------+--------+--------+
$ openstack recordset show f34f835b-9acc-4930-b6dd-d045c15da78a 7861e600-8d9e-4e13-9ea2-9038a2719b41
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| action | NONE |
| created_at | 2017-11-15T04:51:27.000000 |
| description | None |
| id | 7861e600-8d9e-4e13-9ea2-9038a2719b41 |
| name | www.example.net. |
| project_id | 9d0beaef253a4e14bd7025dc30c24f98 |
| records | 127.0.0.1 |
| status | ACTIVE |
| ttl | None |
| type | A |
| updated_at | None |
| version | 1 |
| zone_id | f34f835b-9acc-4930-b6dd-d045c15da78a |
| zone_name | example.net. |
+-------------+--------------------------------------+
Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.