[ English | Indonesia | русский ]

理解清单

OpenStack-Ansible (OSA) 中容器和服务的默认布局由 /etc/openstack_deploy/openstack_user_config.yml 文件以及 /etc/openstack_deploy/conf.d//etc/openstack_deploy/env.d/ 目录的内容决定。您使用这些资源定义用于在部署中针对角色定位主机和容器的映射。

  • 您通过 /etc/openstack_deploy/openstack_user_config.yml 文件和 /etc/openstack_deploy/conf.d/ 目录的内容定义主机组,这些主机组将目标主机收集到清单组中。

  • 您通过 /etc/openstack_deploy/env.d/ 目录中的文件定义容器组,这些容器组可以将要部署的服务组件映射到主机组。

要自定义部署的组件布局,请在运行安装 playbook 之前,适当地修改主机组和容器组。

理解主机组(conf.d 结构)

作为初始配置的一部分,每个目标主机要么出现在 /etc/openstack_deploy/openstack_user_config.yml 文件中,要么出现在 /etc/openstack_deploy/conf.d/ 目录中的文件中。在 conf.d/ 目录中使用的格式与在 openstack_user_config.yml 文件中使用的语法相同。

在这些文件中,目标主机列在诸如 shared-infra_hostsstorage_hosts 等一个或多个标题下,这些标题充当 Ansible 组映射。这些组映射到物理主机。

conf.d/ 目录中的 haproxy.yml.example 文件提供了一个定义主机组(load_balancer_hosts)和两个主机(infra1infra2)的简单示例。

swift.yml.example 文件提供了一个更复杂的示例。在这里,通过使用 container_vars 键指定目标主机的变量。OpenStack-Ansible 将此键下的所有条目作为特定于主机的变量应用于特定主机上的任何组件容器。

注意

为了管理文件大小,我们建议您使用 conf.d/ 目录中的新文件定义新的清单组,特别是对于新服务。

理解容器组(env.d 结构)

附加组映射位于 /etc/openstack_deploy/env.d/ 目录中的文件中。这些组被视为从主机组(如上所述)到容器组的虚拟映射,这些容器组定义了每个服务部署的位置。通过查看 env.d/ 目录中的文件,您可以开始看到默认布局中表示的组嵌套。

例如,shared-infra.yml 文件将容器组 shared-infra_containers 定义为库存组 all_containers 的子集。 shared- infra_containers 容器组映射到 shared-infra_hosts 主机组。 shared-infra_hosts host 组中的每个目标主机上都会部署 shared-infra_containers 容器组中的所有服务组件。

physical_skel 部分中,OpenStack-Ansible 动态清单期望找到一对键。第一个键映射到 container_skel 部分中的项目,第二个键映射到负责托管服务组件的上述目标主机组。

继续举例,memcache.yml 文件定义了 memcache_container 容器组。该组是 shared-infra_containers 组的子集,而后者又是 all_containers 库存组的子集。

注意

all_containers 组由 OpenStack-Ansible 自动定义。OpenStack-Ansible 管理的任何服务组件都映射到 all_containers 库存组的子集,或者通过另一个中间容器组间接映射。

默认布局并不完全依赖于组是其他组的子集。 memcache 组件组是 memcache_container 组的一部分,也是 memcache_all 组的一部分,并且还包含一个 memcached 组件组。如果您查看 playbooks/memcached-install.yml playbook,您会看到该 playbook 适用于 memcached 组中的主机。其他服务可能有更复杂的部署需求。它们以不同的方式定义和使用库存容器组。以这种方式将组件映射到多个组可以灵活地定位角色和任务。