OpenStack CLI

python-designateclient 包附带一个用于 openstack 命令行工具的插件(安装为 openstack)。这可用于访问 Designate API,而无需手动操作 JSON,它还可以以各种格式(JSON、CSV)生成输出,并允许您选择要显示的列。

安装

必须同时安装 python-openstackclientpython-designateclient

$ pip install python-openstackclient python-designateclient

配置

openstack 需要某些信息才能与 REST API 通信。 详细说明请参阅 OpenStack 客户端配置文档

要开始使用,通常只需要以下变量

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

使用命令行工具

在环境中有了足够的信息后,您可以使用 openstack 创建一个区域并用一些记录填充它

$ openstack zone create --email admin@example.com example.com.
+----------------+--------------------------------------+
| Field          | Value                                |
+----------------+--------------------------------------+
| action         | CREATE                               |
| created_at     | 2016-04-19T17:44:04.000000           |
| description    | None                                 |
| email          | admin@example.com                    |
| 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                                    |
+----------------+--------------------------------------+

现在区域已创建,我们可以开始添加记录了。

请注意,区域名称 (example.com) 具有尾随 .,符合 DNS 标准,并且我们没有设置 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 特定子命令

除了 zone createrecordset create 子命令之外,这是支持 Designate V2 的完整子命令列表

子命令

说明

需要管理员权限

zone 创建

创建新的区域

zone 列表

列出区域

zone 显示

显示区域详情

zone 设置

设置区域属性

zone 删除

删除区域

recordset 创建

创建新的记录集

recordset 列表

列出记录集

recordset list all

列出所有区域中的所有记录集

recordset 显示

显示记录集详情

recordset 设置

设置记录集属性

recordset 删除

删除记录集

ptr 记录列表

列出 floatingip ptr 记录

ptr 记录显示

显示 floatingip ptr 记录详情

ptr 记录设置

设置 floatingip ptr 记录

ptr 记录取消设置

删除 floatingip ptr 记录

zone 导出创建

导出区域

zone 导出列表

列出区域导出

zone 导出显示

显示区域导出

zone 导出删除

删除区域导出

zone 导出显示文件

显示区域导出的区域文件

zone 导入创建

从文件系统上的文件导入区域

zone 导入列表

列出区域导入

zone 导入显示

显示区域导入

zone 导入删除

删除区域导入

区域传输请求创建

创建新的区域传输请求

区域传输请求列表

列出区域传输请求

区域传输请求显示

显示区域传输请求详情

区域传输请求设置

设置区域传输请求

区域传输请求删除

删除区域传输请求

区域传输接受请求

接受区域传输请求

区域传输接受列表

列出区域传输接受

区域传输接受显示

显示区域传输接受

zone 放弃

放弃一个区域

zone axfr

区域 AXFR

zone 黑名单创建

创建新的黑名单

zone 黑名单列表

列出黑名单

zone 黑名单显示

显示黑名单详情

zone 黑名单设置

设置黑名单属性

zone 黑名单删除

删除黑名单

tld 创建

创建新的 tld

tld 列表

列出 tld

tld 显示

显示 tld 详情

tld 设置

设置 tld 属性

tld 删除

删除 tld

内置 Designate 文档

您可以通过运行以下命令找到 shell 的完整文档:openstack --help

对于特定命令,您可以执行:openstack subcommand help

示例

由于命令输出会使本文档过长,因此其中大部分将在某些示例中省略。

使用区域

使用以下命令创建一个区域

$ openstack zone create --email admin@example.com example.com.
+----------------+--------------------------------------+
| Field          | Value                                |
+----------------+--------------------------------------+
| action         | CREATE                               |
| created_at     | 2016-04-19T17:44:04.000000           |
| description    | None                                 |
| email          | admin@example.com                    |
| 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                                    |
+----------------+--------------------------------------+

使用以下命令查看区域列表中新创建的区域

$ openstack zone list

使用以下命令之一显示特定区域;大多数区域命令接受 zone_id 或 name 属性

$ openstack zone show example.com.
$ openstack zone show 388814ef-3c5d-415e-a866-5b1d13d78dae

使用此命令更新区域

$ openstack zone set --description "Description" example.com.

使用此命令删除区域

$ openstack zone delete example.com.

使用记录集

使用上面的区域,使用以下命令创建一个记录集

$ 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 |
+-------------+--------------------------------------+

可以为特定的记录集类型提供多个记录

$ openstack recordset create example.com. --type A www --record 192.0.2.20 --record 192.0.2.21

使用以下命令在记录集列表中查看新创建的记录集

$ openstack recordset list example.com.

显示特定的记录集

$ openstack recordset show example.com. www.example.com.

更新特定的记录集

$ openstack recordset set example.com. www.example.com. --ttl 10000 --record 192.0.2.20 --record 192.0.2.21

删除记录集

$ openstack recordset delete example.com. www.example.com.

使用 PTR 记录

可以使用“ptr”子命令管理 Neutron 浮动 IP 的反向 DNS。

创建 PTR 记录

$ 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                                           |
+-------------+------------------------------------------------+

列出所有 PTR 记录

$ openstack ptr record list

显示 PTR 记录

$ openstack ptr record show RegionOne:5c02c519-4928-4a38-bd10-c748c200912f

删除 PTR 记录

$ openstack ptr record delete RegionOne:5c02c519-4928-4a38-bd10-c748c200912f

使用区域导出

区域导出使您可以将 Designate 区域信息离线保存。

创建区域导出

$ 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 |
+------------+--------------------------------------+

列出区域导出

$ openstack zone export list

显示区域导出

$ openstack zone export show 6d5acb9d-f3d6-4ed4-96e1-03bc0e405bb5

显示区域导出的区域文件

$ 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. admin@example.com 1458678636 7200 300 604800 300

删除区域导出

$ openstack zone export delete 6d5acb9d-f3d6-4ed4-96e1-03bc0e405bb5

使用区域导入

区域导入使您可以从文件系统上的文件将区域导入到 Designate。

从文件创建区域导入

$ 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                                 |
+------------+--------------------------------------+

列出区域导入

$ openstack zone import list

显示区域导入

$ openstack zone import show 839d8041-1960-4d74-8533-118d52218074

删除区域导入

$ openstack zone import delete 839d8041-1960-4d74-8533-118d52218074

使用区域黑名单

黑名单区域名称使您可以阻止任何区域模式的创建。

创建区域黑名单

$ 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                                 |
+-------------+--------------------------------------+

列出区域黑名单

$ openstack zone blacklist list

显示区域黑名单

$ openstack zone blacklist show 308ecb82-4952-4476-88b4-9db18fc78e10

更新区域黑名单

$ openstack zone blacklist set --pattern "^([A-Za-z0-9_\-]+\.)*example\.com\.$" --description "Updated the description" 308ecb82-4952-4476-88b4-9db18fc78e10

删除区域黑名单

$ openstack zone blacklist delete 308ecb82-4952-4476-88b4-9db18fc78e10

使用项目之间的区域传输

区域传输使您可以执行将区域所有权转移到另一个项目的操作。

创建区域传输请求

$ 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.                                                                           |
+-------------------+----------------------------------------------------------------------------------------+

列出区域传输请求

$ openstack zone transfer request list

显示区域传输请求详情

$ openstack zone transfer request show 98ba1d22-c092-4603-891f-8a0ab04f7e57

更新区域传输请求

$ openstack zone transfer request set 98ba1d22-c092-4603-891f-8a0ab04f7e57 --description "demo transfer"

删除区域传输请求

$ openstack zone transfer request delete 98ba1d22-c092-4603-891f-8a0ab04f7e57

接受区域传输请求

$ 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                                            |
+--------------------------+---------------------------------------------------------------------------------+

显示区域传输接受

$ openstack zone transfer accept show a8750f50-d7e6-403a-89d2-e209d62ef60e

列出区域传输接受

$ openstack zone transfer accept list

使用顶级域名

tld 命令使您可以管理顶级域名。

创建 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                                 |
+-------------+--------------------------------------+

列出 TLD

$ openstack tld list

显示 TLD 详细信息

$ openstack tld show a7bba387-712b-4b42-9368-4508642c6113

更新 TLD

$ openstack tld set a7bba387-712b-4b42-9368-4508642c6113 --name org --description "TLD description"

删除 TLD

$ openstack tld delete a7bba387-712b-4b42-9368-4508642c6113