软件配置通知部署进度¶
https://blueprints.launchpad.net/heat/+spec/software-config-progress
目前,当部署资源保持 IN_PROGRESS 状态时,无法确定配置是否耗时过长,或者是否在之前或之后发生了无关问题。唯一的选择是 ssh 到服务器进行问题诊断。此蓝图建议服务器在任何部署活动开始时向 heat 发出信号。
问题描述¶
目前,当部署资源保持 IN_PROGRESS 状态时,配置可能确实需要很长时间。在其他情况下,由于以下问题之一可能导致失败。
服务器启动期间可能出现的问题包括
Nova 表示服务器已启动,但镜像实际上未能启动
服务器已启动,但未成功分配 IP 地址
启动时无法访问 Nova 元数据服务器以轮询初始元数据
在启动后但在执行特定部署之前可能出现的问题包括
已安装服务器代理、钩子和配置工具中的错误配置
5. 无法从 heat(或其他配置的轮询源)轮询部署元数据
最后,在实际执行部署时可能出现的问题
6. 由于身份验证或连接问题,服务器无法将结果信号传回 heat。
目前没有反馈表明实际部署已开始。如果用户之前获得了部署已开始的反馈,那么他们可以排除上述六种故障作为部署保持 IN_PROGRESS 状态的原因。
提议的变更¶
目前 SoftwareDeployment.signal 假定收到信号后部署任务就已完成。这将更改为检查信号详细信息,以获取指示这是一个 IN_PROGRESS 信号而不是 COMPLETE/FAILED 信号的额外数据。软件配置钩子将被修改为在开始部署任务之前发送 IN_PROGRESS 信号。
信号详细信息当前是包含每个输出值条目的 JSON 映射,以及 deploy_stdout、deploy_stderr 和 deploy_status_code。将期望两个新的条目,deploy_status 和 deploy_status_reason。SoftwareDeployment.signal 将检查此项,如果 deploy_status 是 IN_PROGRESS,则部署资源将保持在 IN_PROGRESS 状态。但是,将生成一个资源事件,以便向用户提供一些反馈,表明他们的部署任务已开始。
需要考虑向后兼容性问题,包括旧镜像在新的 heat 上运行,以及新镜像在旧的 heat 上运行。
旧镜像,新 heat¶
这里没有什么特别需要考虑的。服务器不会向 heat 发出信号表明部署正在开始,但部署资源已经处于 IN_PROGRESS 状态。唯一的含义是用户将不会看到额外的 IN_PROGRESS 事件,该事件告诉他们部署已开始。
新镜像,旧 heat¶
由于旧的 heat 假定收到信号后部署就已完成,因此钩子需要抑制发送任何 IN_PROGRESS 信号。可以通过钩子检查输入 deploy_status_aware 是否设置为 true 来实现。只有新的 heat 才会将此输入值设置为 true,因此钩子可以检查此输入并相应地行为。
备选方案¶
无
实现¶
负责人¶
- 主要负责人
<steve-stevebaker>
里程碑¶
- 完成目标里程碑
Kilo-1
工作项¶
工作项目或任务 – 将该功能分解为实施它需要完成的事情。这些部分可能最终由不同的人完成,但我们主要试图了解实施的时间表。
依赖项¶
此蓝图没有蓝图或库依赖项