使用 Zaqar 进行软件配置元数据和信号传递¶
https://blueprints.launchpad.net/heat/+spec/software-config-zaqar
Zaqar 提供了一个简单的消息传递服务,允许 heat 和编排服务高效地相互通信,这使其非常适合软件配置元数据分发和信号传递
问题描述¶
有许多领域可以从使用像 Zaqar 这样的消息传递服务中受益。其中两个是
将服务器配置元数据从 heat 传播到服务器
服务器向 heat 传递软件配置事件已发生的信号,并附带相关数据。
就像 OS::Nova::Server software_config_transport:POLL_TEMP_URL 一样,这将阻止服务器直接轮询 heat 以获取元数据传递,从而提高 heat 的可扩展性。
提议的变更¶
对于 OS::Nova::Server software_config_transport:ZAQAR_MESSAGE,创建一个队列,专门用于从 heat 向单个服务器发布元数据更改。os-collect-config 需要一个从该队列中消费消息的收集器。
对于 OS::Heat::SoftwareDeployment signal_transport:ZAQAR_MESSAGE,创建一个队列,专门用于单个服务器向单个部署资源传递配置结果。heat-templates 55-heat-config 需要修改,以依赖 python-zaqarclient 并将消息推送到队列,如果所需的部署输入值指示已配置队列。
就像 signal_transport:HEAT_SIGNAL 和 software_config_transport:POLL_SERVER_HEAT 一样,将为部署和服务器资源创建堆栈用户,并将这些用户的凭据提供给服务器。如果 Zaqar 允许读取和写入已签名的 webhook 消息,那么我们可以考虑切换到这种方式,这样就不需要创建堆栈用户了。
signal_transport:AUTO 将被修改,以便如果配置了消息传递端点,ZAQAR_MESSAGE 将成为首选方法。
备选方案¶
无
实现¶
负责人¶
目前此蓝图没有分配工程师
- 主要负责人
<None>
里程碑¶
- 完成目标里程碑
Kilo-3
工作项¶
实现 OS::Nova::Server software_config_transport:ZAQAR_MESSAGE
实现 OS::Heat::SoftwareDeployment signal_transport:ZAQAR_MESSAGE
为 os-collect-config 编写 Zaqar 收集器
修改软件配置 os-refresh-config 钩子,以使用 zaqar 推动部署信号数据
依赖项¶
python-zaqarclient 将被添加到 heat/requirements.txt (这已经是 zaqar contrib 资源的依赖项)
python-zaqarclient 将成为 os-collect-config 和 heat-templates heat-config 元素的依赖项。
这可以在软件配置触发器蓝图之后完成,因为该蓝图包含一些重构,包括将 signal_transport 逻辑从资源移动到部署 REST API。