OpenStack CLI¶
The python-designateclient package comes with a plugin for the openstack command line tool (installed as openstack). This can be used to access a Designate API without having to manipulate JSON by hand, it can also produce the output in a variety of formats (JSON, CSV) and allow you to select columns to be displayed.
Installation¶
Both python-openstackclient and python-designateclient must be installed:
$ pip install python-openstackclient python-designateclient
Configuration¶
openstack requires certain information to talk to the REST API. An in-depth explanation is covered in the OpenStack Client configuration documentation.
To get started, all you usually need are the following variables:
OS_AUTH_VERSION=3
OS_IDENTITY_API_VERSION=3
OS_AUTH_URL=http://127.0.0.1:5000/v3
OS_PROJECT_NAME=demo
OS_USERNAME=demo
OS_TENANT_NAME=demo
OS_PASSWORD=password
Using the Command Line Tool¶
With enough details now in the environment, you can use the openstack to create a zone and populate it with some records:
$ openstack zone create --email [email protected] example.com.
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| action | CREATE |
| created_at | 2016-04-19T17:44:04.000000 |
| description | None |
| email | [email protected] |
| id | 388814ef-3c5d-415e-a866-5b1d13d78dae |
| masters | |
| name | example.com. |
| pool_id | 794ccc2c-d751-44fe-b57f-8894c9f5c842 |
| project_id | 123456 |
| serial | 1461087844 |
| status | PENDING |
| transferred_at | None |
| ttl | 3600 |
| type | PRIMARY |
| updated_at | None |
| version | 1 |
+----------------+--------------------------------------+
Now that the zone has been created, we can start adding records.
You’ll note that the zone name (example.com) has a trailing .
, as per
the DNS standard, and we didn’t set a TTL.
$ openstack recordset create --type A --record 192.0.2.20 example.com. www
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| action | CREATE |
| created_at | 2016-04-19T17:51:12.000000 |
| description | None |
| id | 180d3574-3c29-4ea2-b6ff-df904bd3f126 |
| name | www.example.com. |
| records | 192.0.2.20 |
| status | PENDING |
| ttl | None |
| type | A |
| updated_at | None |
| version | 1 |
| zone_id | 388814ef-3c5d-415e-a866-5b1d13d78dae |
+-------------+--------------------------------------+
Designate-specific Subcommands¶
Aside from the zone create
and recordset create
subcommands, this is
the full list of subcommands that enable Designate V2 support:
subcommand |
Notes |
Admin Required |
---|---|---|
zone create |
Create new zone |
|
zone list |
List zones |
|
zone show |
Show zone details |
|
zone set |
Set zone properties |
|
zone delete |
Delete zone |
|
recordset create |
Create new recordset |
|
recordset list |
List recordsets |
|
recordset list all |
List all recordsets in all zones |
|
recordset show |
Show recordset details |
|
recordset set |
Set recordset properties |
|
recordset delete |
Delete recordset |
|
ptr record list |
List floatingip ptr records |
|
ptr record show |
Show floatingip ptr record details |
|
ptr record set |
Set floatingip ptr record |
|
ptr record unset |
Unset floatingip ptr record |
|
zone export create |
Export a Zone |
|
zone export list |
List Zone Exports |
|
zone export show |
Show a Zone Export |
|
zone export delete |
Delete a Zone Export |
|
zone export showfile |
Show the zone file for the Zone Export |
|
zone import create |
Import a Zone from a file on the filesystem |
|
zone import list |
List Zone Imports |
|
zone import show |
Show a Zone Import |
|
zone import delete |
Delete a Zone Import |
|
zone transfer request create |
Create new zone transfer request |
|
zone transfer request list |
List Zone Transfer Requests |
|
zone transfer request show |
Show Zone Transfer Request Details |
|
zone transfer request set |
Set a Zone Transfer Request |
|
zone transfer request delete |
Delete a Zone Transfer Request |
|
zone transfer accept request |
Accept a Zone Transfer Request |
|
zone transfer accept list |
List Zone Transfer Accepts |
|
zone transfer accept show |
Show Zone Transfer Accept |
|
zone abandon |
Abandon a zone |
Yes |
zone axfr |
AXFR a zone |
|
zone blacklist create |
Create new blacklist |
Yes |
zone blacklist list |
List blacklists |
Yes |
zone blacklist show |
Show blacklist details |
Yes |
zone blacklist set |
Set blacklist properties |
Yes |
zone blacklist delete |
Delete blacklist |
Yes |
tld create |
Create new tld |
Yes |
tld list |
List tlds |
Yes |
tld show |
Show tld details |
Yes |
tld set |
Set tld properties |
Yes |
tld delete |
Delete tld |
Yes |
Built-in Designate Documentation¶
You’ll find complete documentation on the shell by running:
openstack --help
For a specific command, you can execute: openstack subcommand help
Examples¶
Because command output would make this document long, much of it will be omitted from some examples.
Working with Zones¶
Create a zone with the following command:
$ openstack zone create --email [email protected] example.com.
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| action | CREATE |
| created_at | 2016-04-19T17:44:04.000000 |
| description | None |
| email | [email protected] |
| id | 388814ef-3c5d-415e-a866-5b1d13d78dae |
| masters | |
| name | example.com. |
| pool_id | 794ccc2c-d751-44fe-b57f-8894c9f5c842 |
| project_id | 123456 |
| serial | 1461087844 |
| status | PENDING |
| transferred_at | None |
| ttl | 3600 |
| type | PRIMARY |
| updated_at | None |
| version | 1 |
+----------------+--------------------------------------+
See the new zone in your list of zones with the following command:
$ openstack zone list
Display a specific zone with either of these commands; most zone commands accept either the zone_id or name attribute:
$ openstack zone show example.com.
$ openstack zone show 388814ef-3c5d-415e-a866-5b1d13d78dae
Update the zone with this command:
$ openstack zone set --description "Description" example.com.
Delete the zone with this command:
$ openstack zone delete example.com.
Working with Recordsets¶
Using the zone above, create a recordset with the following command:
$ openstack recordset create example.com. --type A www --record 192.0.2.20
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| action | CREATE |
| created_at | 2016-04-19T17:51:12.000000 |
| description | None |
| id | 180d3574-3c29-4ea2-b6ff-df904bd3f126 |
| name | www.example.com. |
| records | 192.0.2.20 |
| status | PENDING |
| ttl | None |
| type | A |
| updated_at | None |
| version | 1 |
| zone_id | 388814ef-3c5d-415e-a866-5b1d13d78dae |
+-------------+--------------------------------------+
Multiple records can be provided for a specific recordset type:
$ openstack recordset create example.com. --type A www --record 192.0.2.20 --record 192.0.2.21
See the new recordset in the list of recordsets with the following command:
$ openstack recordset list example.com.
Display a specific recordset:
$ openstack recordset show example.com. www.example.com.
Update a specific recordset:
$ openstack recordset set example.com. www.example.com. --ttl 10000 --record 192.0.2.20 --record 192.0.2.21
Delete a recordset:
$ openstack recordset delete example.com. www.example.com.
Working with PTR Records¶
Reverse DNS for Neutron Floating IPs can be managed with the “ptr” subcommand.
Create a PTR record:
$ openstack ptr record set RegionOne:5c02c519-4928-4a38-bd10-c748c200912f ftp.example.com.
+-------------+------------------------------------------------+
| Field | Value |
+-------------+------------------------------------------------+
| action | CREATE |
| address | 172.24.4.11 |
| description | None |
| id | RegionOne:5c02c519-4928-4a38-bd10-c748c200912f |
| ptrdname | ftp.example.com. |
| status | PENDING |
| ttl | 3600 |
+-------------+------------------------------------------------+
List all PTR records:
$ openstack ptr record list
Show a PTR record:
$ openstack ptr record show RegionOne:5c02c519-4928-4a38-bd10-c748c200912f
Delete a PTR record:
$ openstack ptr record delete RegionOne:5c02c519-4928-4a38-bd10-c748c200912f
Working with Zone Exports¶
Zone exports enable you to save Designate zone information offline.
Create a zone export:
$ openstack zone export create example.com.
+------------+--------------------------------------+
| Field | Value |
+------------+--------------------------------------+
| created_at | 2016-04-19T20:42:16.000000 |
| id | 6d5acb9d-f3d6-4ed4-96e1-03bc0e405bb5 |
| location | None |
| message | None |
| project_id | 123456 |
| status | PENDING |
| updated_at | None |
| version | 1 |
| zone_id | 388814ef-3c5d-415e-a866-5b1d13d78dae |
+------------+--------------------------------------+
List zone exports:
$ openstack zone export list
Show zone export:
$ openstack zone export show 6d5acb9d-f3d6-4ed4-96e1-03bc0e405bb5
Show the zone file for the Zone Export:
$ openstack zone export showfile 6d5acb9d-f3d6-4ed4-96e1-03bc0e405bb5 -f value
$ORIGIN example.com.
$TTL 3600
example.com. IN NS ns2.exampleprovider.com.
example.com. IN NS ns1.exampleprovider.com.
example.com. IN SOA ns.exampleprovider.com. [email protected] 1458678636 7200 300 604800 300
Delete zone export:
$ openstack zone export delete 6d5acb9d-f3d6-4ed4-96e1-03bc0e405bb5
Working with Zone Imports¶
Zone imports enable you to import a zone into Designate from a file on the filesystem.
Create a zone import from a file:
$ openstack zone import create zonefile.txt
+------------+--------------------------------------+
| Field | Value |
+------------+--------------------------------------+
| created_at | 2016-04-19T20:59:38.000000 |
| id | bab6e152-da9f-4dfc-8a59-3f9710fe4894 |
| message | None |
| project_id | 123456 |
| status | PENDING |
| updated_at | None |
| version | 1 |
| zone_id | None |
+------------+--------------------------------------+
List zone imports:
$ openstack zone import list
Show zone import:
$ openstack zone import show 839d8041-1960-4d74-8533-118d52218074
Delete zone import:
$ openstack zone import delete 839d8041-1960-4d74-8533-118d52218074
Working with Zone Blacklists¶
Blacklisting zone names enables you to block any zone pattern from creation.
Create a zone blacklist
$ openstack zone blacklist create --pattern "^example\.com\.$" --description "This is a blacklisted domain."
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| created_at | 2016-05-10 00:26:07 |
| description | This is a blacklisted domain. |
| id | 308ecb82-4952-4476-88b4-9db18fc78e10 |
| pattern | ^example.com.$ |
| updated_at | None |
+-------------+--------------------------------------+
List zone blacklist
$ openstack zone blacklist list
Show zone blacklist
$ openstack zone blacklist show 308ecb82-4952-4476-88b4-9db18fc78e10
Update zone blacklist
$ openstack zone blacklist set --pattern "^([A-Za-z0-9_\-]+\.)*example\.com\.$" --description "Updated the description" 308ecb82-4952-4476-88b4-9db18fc78e10
Delete a zone blacklist
$ openstack zone blacklist delete 308ecb82-4952-4476-88b4-9db18fc78e10
Working with Zone Transfers Between Projects¶
Zone Transfers enable you to perform the transfer of zone ownership to another project.
Create a Zone Transfer Request
$ openstack zone transfer request create --target-project-id 9cc52dd7649c4aa99fa9db2fb94dabb8 53cdcf82-9e32-4a00-a90d-32d6ec5db7e9
+-------------------+----------------------------------------------------------------------------------------+
| Field | Value |
+-------------------+----------------------------------------------------------------------------------------+
| created_at | 2016-05-10 01:39:00 |
| description | None |
| id | 98ba1d22-c092-4603-891f-8a0ab04f7e57 |
| key | J6JCET2C |
| links | {u'self': |
| | u'http://192.168.11.182:9001/v2/zones/tasks/transfer_requests/98ba1d22-c092-4603-891f- |
| | 8a0ab04f7e57'} |
| project_id | 10457ad1fe074f4a89bb1e4c0cd83d40 |
| status | ACTIVE |
| target_project_id | 9cc52dd7649c4aa99fa9db2fb94dabb8 |
| updated_at | None |
| zone_id | 53cdcf82-9e32-4a00-a90d-32d6ec5db7e9 |
| zone_name | example.com. |
+-------------------+----------------------------------------------------------------------------------------+
List Zone Transfer Requests
$ openstack zone transfer request list
Show Zone Transfer Request Details
$ openstack zone transfer request show 98ba1d22-c092-4603-891f-8a0ab04f7e57
Update a Zone Transfer Request
$ openstack zone transfer request set 98ba1d22-c092-4603-891f-8a0ab04f7e57 --description "demo transfer"
Delete a Zone Transfer Request
$ openstack zone transfer request delete 98ba1d22-c092-4603-891f-8a0ab04f7e57
Accept a Zone Transfer Request
$ openstack zone transfer accept request --transfer-id 98ba1d22-c092-4603-891f-8a0ab04f7e57 --key J6JCET2C
+--------------------------+---------------------------------------------------------------------------------+
| Field | Value |
+--------------------------+---------------------------------------------------------------------------------+
| created_at | 2016-05-10 05:02:52 |
| id | a8750f50-d7e6-403a-89d2-e209d62ef60e |
| key | J6JCET2C |
| links | {u'self': |
| | u'http://192.168.11.182:9001/v2/zones/tasks/transfer_accepts/a8750f50-d7e6 |
| | -403a-89d2-e209d62ef60e', u'zone': |
| | u'http://192.168.11.182:9001/v2/zones/53cdcf82-9e32-4a00-a90d-32d6ec5db7e9'} |
| project_id | 10457ad1fe074f4a89bb1e4c0cd83d40 |
| status | COMPLETE |
| updated_at | 2016-05-10 05:02:52 |
| zone_id | 53cdcf82-9e32-4a00-a90d-32d6ec5db7e9 |
| zone_transfer_request_id | 98ba1d22-c092-4603-891f-8a0ab04f7e57 |
+--------------------------+---------------------------------------------------------------------------------+
Show Zone Transfer Accept
$ openstack zone transfer accept show a8750f50-d7e6-403a-89d2-e209d62ef60e
List Zone Transfer Accept
$ openstack zone transfer accept list
Working with Top Level Domains¶
The tld commands enable you to manage top level domains.
Create a TLD
$ openstack tld create --name com --description "demo TLD"
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| created_at | 2016-05-10 05:21:40 |
| description | demo TLD |
| id | a7bba387-712b-4b42-9368-4508642c6113 |
| name | com |
| updated_at | None |
+-------------+--------------------------------------+
List TLDs
$ openstack tld list
Show TLD Details
$ openstack tld show a7bba387-712b-4b42-9368-4508642c6113
Update a TLD
$ openstack tld set a7bba387-712b-4b42-9368-4508642c6113 --name org --description "TLD description"
Delete a TLD
$ openstack tld delete a7bba387-712b-4b42-9368-4508642c6113