共享区域

共享区域允许在租户之间共享特定区域。当一个区域的记录需要由多个项目管理时,这非常有用。例如,当 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

在以下情况下无法取消共享区域

  • 区域在其他项目中具有记录集。