SSH 控制台¶
https://bugs.launchpad.net/ironic/+bug/1526305
实现了控制台驱动程序 – “ShellinaboxConsole”,它支持通过 SSH 驱动程序访问控制台(仅适用于 virsh virt_type)。
问题描述¶
目前,尚不支持获取开发和测试环境中的虚拟机的控制台。
提议的变更¶
实现了一个控制台驱动程序 – “ShellinaboxConsole” – 它使用 ssh+shellinabox 连接到虚拟机的控制台
使用现有的 ironic/drivers/modules/console_utils 模块来启动/停止 shellinabox。
将 ssh_terminal_port 属性添加到 CONSOLE_PROPERTIES。这将是 shellinabox 在本地监听的端口。
在 ironic/drivers/modules/ssh.py 中添加了从 base.ConsoleInterface 继承的新类 ShellinaboxConsole
- 在 ShellinaboxConsole 类中实现以下方法。
validate()- 验证节点控制台信息。参数 task : 来自 TaskManager 的任务。
引发 : InvalidParameterValue。
引发 : MissingParameterValue。
start_console()- 为节点启动远程控制台。stop_console()- 停止节点的远程控制台会话。get_console()- 获取控制台的类型和连接信息。
在 PXEAndSSHDriver 和 AgentAndSSHDriver 中添加 self 变量 self.console。
备选方案¶
无
数据模型影响¶
无
状态机影响¶
无
REST API 影响¶
无
客户端 (CLI) 影响¶
无
RPC API 影响¶
无
驱动程序 API 影响¶
无
Nova 驱动程序影响¶
无
Ramdisk 影响¶
N/A
安全影响¶
无
其他最终用户影响¶
无
可扩展性影响¶
无
性能影响¶
无
其他部署者影响¶
- 以下内容已经是 driver_info 字段的一部分,是必需的
ssh_address- 要 SSH 连接到的节点的 IP 地址或主机名。ssh_username- 用于身份验证的用户名。ssh_virt_type- 要使用的虚拟化软件;必须是 virsh。
- 此外,需要提供 driver_info 中的一个字段
ssh_terminal_port- 要连接的端口,仅用于控制台访问。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
niu-zglinux
工作项¶
实现从 base.ManagementInterface 继承的 ShellinaboxConsole 类。实现 validate、start_console、stop_console、get_console。添加在 devstack 脚本中启用 pty 控制台的能力,并默认保留日志控制台,以免影响 gate 日志。
依赖项¶
无
测试¶
将添加单元测试。
升级和向后兼容性¶
无
文档影响¶
无
参考资料¶
无