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 类。实现 validatestart_consolestop_consoleget_console。添加在 devstack 脚本中启用 pty 控制台的能力,并默认保留日志控制台,以免影响 gate 日志。

依赖项

测试

将添加单元测试。

升级和向后兼容性

文档影响

参考资料