OpenStack CLI¶
python-designateclient 包附带一个用于 openstack 命令行工具的插件(安装为 openstack)。这可用于访问 Designate API,而无需手动操作 JSON,它还可以以各种格式(JSON、CSV)生成输出,并允许您选择要显示的列。
安装¶
必须同时安装 python-openstackclient 和 python-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 create 和 recordset 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