Change-Id: I95a098190917017b010a323403ca43108f078958
8.8 KiB
designate command line tool
The python-designateclient package comes with a command line tool
(installed as designate
), 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.
Credentials
As with any OpenStack utility, designate
requires certain information to talk to
the REST API, username, password, auth url (from where the other
required endpoints are retrieved once you are authenticated).
To provide your access credentials (username, password, tenant name
or tenant id) you can pass them on the command line with the
--os-username
, --os-password
,
--os-tenant-name
or --os-tenant-id
params, but
it's easier to just set them as environment variables:
export OS_USERNAME=openstack
export OS_PASSWORD=yadayada
export OS_TENANT_NAME=myproject
export OS_TENANT_ID=123456789
You will also need to define the authentication url with
--os-auth-url
or set is as an environment variable as
well:
export OS_AUTH_URL=https://example.com:5000/v2.0/
Since Keystone can return multiple regions in the Service Catalog,
you can specify the one you want with --os-region-name
(or
export OS_REGION_NAME
). It defaults to the first in the
list returned.
Using the command line tool
With enough details now in environment, you can use the designate client to create a domain & populate it with some records:
$ designate domain-create --name doctestdomain.eu. --email admin@doctestdomain.eu
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| description | None |
| created_at | 2013-09-19T11:45:25.295355 |
| updated_at | None |
| email | admin@doctestdomain.eu |
| ttl | 3600 |
| serial | 1379591125 |
| id | eacbe2a5-95f1-4a9f-89f5-b9c58009b163 |
| name | doctestdomain.eu. |
+-------------+--------------------------------------+
You can see more details on the arguments domain-create accepts at the REST API create-domain.
Now that the domain has been created, we can start adding records.
You'll note that the name (www.doctestdomain.eu) has a trailing
.
, as per the DNS standard, we didn't set a TTL and we had
to specify the parent zone/domain by domain_id
eacbe2a5-95f1-4a9f-89f5-b9c58009b163
.
$ designate record-create eacbe2a5-95f1-4a9f-89f5-b9c58009b163 --name www.doctestdomain.eu. --type A --data 1.2.3.4
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| name | www.doctestdomain.eu. |
| data | 1.2.3.4 |
| created_at | 2013-09-19T13:44:42.295428 |
| updated_at | None |
| id | 147f6082-8466-4951-8d13-37a10e92b11e |
| priority | None |
| ttl | None |
| type | A |
| domain_id | eacbe2a5-95f1-4a9f-89f5-b9c58009b163 |
| description | None |
+-------------+--------------------------------------+
subcommands
We've already seen the domain-create
and
record-create
subcommands, here the full list of
subcommands:
subcommand | Notes | Admin Required |
---|---|---|
diagnostics-ping diagnostics-sync-all diagnostics-sync-domain diagnostics-sync-record domain-create domain-delete domain-get domain-list domain-servers-list domain-update help record-create record-delete record-get record-list record-update report-count-all report-count-domains report-count-records report-count-tenants report-tenant-domains report-tenants-all server-create server-delete server-get server-list server-update |
Ping a service on a given host Sync Everything Sync a single Domain Sync a single Record Create Domain Delete Domain Get Domain List Domains List Domain Servers Update Domain print detailed help for another command Create Record Delete Record Get Record List Records Update Record Get count totals for all tenants, domains and records Get counts for total domains Get counts for total records Get counts for total tenants Get a list of domains for given tenant Get list of tenants and domain count for each Create Server Delete Server Get Server List Servers Update Server |
Builtin designate documentation
You'll find complete documentation on the shell by running
designate --help
:
usage: designate [--version] [-v] [--log-file LOG_FILE] [-q] [-h] [--debug]
[--os-endpoint OS_ENDPOINT] [--os-auth-url OS_AUTH_URL]
[--os-username OS_USERNAME] [--os-password OS_PASSWORD]
[--os-tenant-id OS_TENANT_ID]
[--os-tenant-name OS_TENANT_NAME] [--os-token OS_TOKEN]
[--os-service-type OS_SERVICE_TYPE]
[--os-region-name OS_REGION_NAME]
[--sudo-tenant-id SUDO_TENANT_ID] [--insecure]
Designate Client
optional arguments:
--version show program's version number and exit
-v, --verbose Increase verbosity of output. Can be repeated.
--log-file LOG_FILE Specify a file to log output. Disabled by default.
-q, --quiet suppress output except warnings and errors
-h, --help show this help message and exit
--debug show tracebacks on errors
--os-endpoint OS_ENDPOINT
Defaults to env[OS_DNS_ENDPOINT]
--os-auth-url OS_AUTH_URL
Defaults to env[OS_AUTH_URL]
--os-username OS_USERNAME
Defaults to env[OS_USERNAME]
--os-password OS_PASSWORD
Defaults to env[OS_PASSWORD]
--os-tenant-id OS_TENANT_ID
Defaults to env[OS_TENANT_ID]
--os-tenant-name OS_TENANT_NAME
Defaults to env[OS_TENANT_NAME]
--os-token OS_TOKEN Defaults to env[OS_SERVICE_TOKEN]
--os-service-type OS_SERVICE_TYPE
Defaults to env[OS_DNS_SERVICE_TYPE], or 'dns'
--os-region-name OS_REGION_NAME
Defaults to env[OS_REGION_NAME]
--sudo-tenant-id SUDO_TENANT_ID
Defaults to env[DESIGNATE_SUDO_TENANT_ID]
--insecure Explicitly allow 'insecure' SSL requests
Commands:
diagnostics-ping Ping a service on a given host
diagnostics-sync-all Sync Everything
diagnostics-sync-domain Sync a single Domain
diagnostics-sync-record Sync a single Record
domain-create Create Domain
domain-delete Delete Domain
domain-get Get Domain
domain-list List Domains
domain-servers-list List Domain Servers
domain-update Update Domain
help print detailed help for another command
record-create Create Record
record-delete Delete Record
record-get Get Record
record-list List Records
record-update Update Record
report-count-all Get count totals for all tenants, domains and records
report-count-domains Get counts for total domains
report-count-records Get counts for total records
report-count-tenants Get counts for total tenants
report-tenant-domains Get a list of domains for given tenant
report-tenants-all Get list of tenants and domain count for each
server-create Create Server
server-delete Delete Server
server-get Get Server
server-list List Servers
server-update Update Server