通用基础设施角色

日期:

2017-09-10 14:00

标签:

ansible, roles, mariadb, rabbitmq

请概述您创建此规范/蓝图的原因。

包含您的 Launchpad 蓝图的 URL

目前 openstack-ansible 正在维护用于部署通用基础设施服务(如 MariaDB 和 RabbitMQ)的基础设施角色,这些服务也适用于非 OpenStack ansible 环境。在几乎不需要重构的情况下,这些角色也可以用于在其他 Ansible 管理的环境中部署这些服务。

通过维护健壮、通用的服务角色,其他 Ansible 社区的运维人员更有可能使用、改进和维护它们。这将使我们受益,培养我们在构建角色时保持模块化思维,从而提高 OSA 消费者的可维护性和更广泛的测试。

在某些情况下,我们可能希望弃用我们的 openstack-ansible 角色,并使用更通用的上游替代方案。

问题描述

在某些角色(如 haproxy)中,我们实现了一个非常 OSA 特定的部署,几乎没有可重用性或针对典型的 HAProxy 部署者的可配置性。

其他角色,如 Galera 服务器,相对通用且健壮,但带有 openstack-ansible-service_name 命名方案,这使得任何不使用 openstack-ansible 的人不太可能在他们的部署中使用该角色。

pip_install 是一个需要进行一些小的重构才能使其通用的角色示例。该角色执行一些超出范围的任务,例如仓库管理,这与安装 pip 无关。这些功能应移动到适当模块化的角色(通用的仓库管理角色?),以便 pip_install 仅执行其应该执行的工作。

提议的变更

检查以下角色,以识别并重构超出范围的任务,并在集成的仓库级别编排 openstack-ansible 特定的配置。如果角色构建正确,它应该提供必要的服务配置,可以从 inventory 和 playbooks 中注入。

最初要检查的角色
  • openstack-ansible-pip_install

  • openstack-ansible-lxc_hosts

  • openstack-ansible-lxc_container_create

  • openstack-ansible-haproxy_server

  • openstack-ansible-memcached_server

  • openstack-ansible-galera_server

  • openstack-ansible-rabbitmq_server

  • openstack-ansible-ceph_client

一旦上述工作进展顺利,我们应该考虑将一些角色重命名为更合适的名称,例如 openstack-ansible-galera_server 变为 ansible-mariadb-cluster 等。

备选方案

N/A

Playbook/Role 影响

playbooks 和尤其是 inventory 最终应该包含我们所有的 openstack-ansible 特定的配置。基础设施角色本身应该通用化,而不假设或偏向于仅被 openstack-ansible 消费。

在某些情况下,这已经实现,但在其他情况下,该角色将经历重大更改或彻底替换以实现这一点。

升级影响

角色的消费者需要适应任何重大重构,包括 git 源代码和角色名称的可能重命名。

安全影响

N/A

性能影响

N/A

最终用户影响

N/A

部署者影响

经常与 openstack-ansible 合作的部署人员将受益于能够使用相同的角色来部署适用于他们从事的其他项目的服务。

开发人员影响

这有可能吸引更多的开发人员来协助维护一些角色。像重命名这样的外观更改也可能帮助经验丰富的 OSA 开发人员在构建这些角色的更改时采取更抽象的方法,这应该使其在长期内更易于维护。

依赖项

N/A

实现

负责人

主要负责人

Logan Vig (LP: loganv; IRC: logan-)

工作项

  • 检查基础设施角色是否存在超出范围的任务或可重用性问题。通过重构或替换角色来解决这些问题。

  • 如果需要,使用演示角色 ad-hoc 用法的示例 playbooks 改进角色文档。

  • 将角色和仓库重命名为全局命名空间的 ansible 角色,例如 ansible-service-name。

测试

N/A

文档影响

改进和扩展角色文档也将有利于可重用性。

参考资料