共享区域¶
共享区域允许在租户之间共享特定区域。当一个区域的记录需要由多个项目管理时,这非常有用。例如,当 Designate 区域被分配给 Neutron 中的共享网络时。
区域共享具有以下属性
配额将针对区域所有者执行。
与区域共享的项目只能管理由该项目创建或拥有的记录集。
区域所有者可以看到、修改和删除由其他项目创建的记录集。
与区域共享的项目无法看到或修改区域的属性。
具有共享的区域在删除共享或使用 delete-shares 修饰符之前无法删除。
与区域共享的项目无法创建子区域。
如何将区域与另一个项目共享¶
创建要共享的区域
$ openstack zone create example.com. --email admin@example.com
+----------------+--------------------------------------+
| Field | Value |
+----------------+--------------------------------------+
| action | CREATE |
| email | admin@example.com |
| id | 92b2214f-8a57-4ed3-95f0-a64099f3b516 |
| name | example.com. |
| pool_id | 794ccc2c-d751-44fe-b57f-8894c9f5c842 |
| project_id | 804806ad94364aecb0f9ae86ad653055 |
| serial | 1596186919 |
| status | PENDING |
| ttl | 3600 |
| type | PRIMARY |
+----------------+--------------------------------------+
使用 openstack zone share create 命令共享区域(在此示例中,我们要共享的项目的 ID 是 356df8e6c7564b5bb107f5de26cdb8ea)
$ openstack zone share create example.com. 356df8e6c7564b5bb107f5de26cdb8ea
+-------------------+--------------------------------------+
| Field | Value |
+-------------------+--------------------------------------+
| created_at | 2023-01-30T23:17:44.000000 |
| id | 77e4d5b9-2057-4be7-8cf0-9f84ef0efec1 |
| project_id | 804806ad94364aecb0f9ae86ad653055 |
| target_project_id | 356df8e6c7564b5bb107f5de26cdb8ea |
| updated_at | None |
| zone_id | 92b2214f-8a57-4ed3-95f0-a64099f3b516 |
+-------------------+--------------------------------------+
项目 356df8e6c7564b5bb107f5de26cdb8ea 现在可以访问区域 92b2214f-8a57-4ed3-95f0-a64099f3b516,并且可以管理区域中的记录集。
使用项目 356df8e6c7564b5bb107f5de26cdb8ea 的凭据,我们可以为 www.example.com. 创建一个记录集。
$ openstack recordset create --type A --record 192.0.2.1 example.com. www
+-------------+--------------------------------------+
| Field | Value |
+-------------+--------------------------------------+
| action | CREATE |
| created_at | 2023-01-30T23:28:05.000000 |
| description | None |
| id | aff3e00a-9e5c-4cfa-9650-65196f73418b |
| name | www.example.com. |
| project_id | 356df8e6c7564b5bb107f5de26cdb8ea |
| records | 192.0.2.1 |
| status | PENDING |
| ttl | None |
| type | A |
| updated_at | None |
| version | 1 |
| zone_id | 92b2214f-8a57-4ed3-95f0-a64099f3b516 |
| zone_name | example.com. |
+-------------+--------------------------------------+
如何列出共享区域的所有项目¶
可以使用 openstack zone share list 命令列出区域的所有区域共享。
$ openstack zone share list example.com.
+-----------------------+-----------------------+-------------------------+
| id | zone_id | target_project_id |
+-----------------------+-----------------------+-------------------------+
| 77e4d5b9-2057-4be7- | 92b2214f-8a57-4ed3- | 356df8e6c7564b5bb107f5d |
| 8cf0-9f84ef0efec1 | 95f0-a64099f3b516 | e26cdb8ea |
+-----------------------+-----------------------+-------------------------+
如何删除区域共享¶
要停止与项目共享区域,可以使用 openstack zone share delete 命令
$ openstack zone share delete example.com. 77e4d5b9-2057-4be7-8cf0-9f84ef0efec1
在以下情况下无法取消共享区域
区域在其他项目中具有记录集。