通过可通过 SSH 访问的公共主机在本地 QEMU 虚拟机上实现 Ansible 自动化

Ansible automation on local QEMU virtual machines through public host machine accessible via SSH

提问人:Talha Ashraf 提问时间:10/8/2023 更新时间:10/8/2023 访问量:70

问:

我是一名研究生。这个问题是针对我最后一年的项目。

我有一台运行 Slackware 的主机,可以通过 SSH 公开访问。我无法在主机上使用 sudo 安装任何东西。

在该主机上,我运行了多个 QEMU 虚拟机,但未配置网络(即未分配 IP 地址)。这些虚拟机通过大学设计的 CLI 工具进行管理。CLI 工具类似于 libvirt 或 Proxmox,并在 tmux 会话中运行这些机器。此外,每个虚拟机都有一个用户名和密码。

我能够使用 Ansible 通过 SSH 连接到主机。

我的目标是能够连接到 QEMU 虚拟机,并使用 Ansible 在每个虚拟机中配置基本网络。

这是我的局限性。

  1. 我无法使用 community.libvirt.libvirt_qemu因为我的用户不在组中。我希望有一个纯粹的 QEMU 连接插件。sudo
  2. 我找不到任何 Ansible 连接插件来连接到 tmux 会话。

实现这一目标的最佳方法是什么?

ssh ansible qemu libvirt proxmox

评论


答:

0赞 Vladimir Botka 10/8/2023 #1

你说:“这些虚拟机是通过大学设计的CLI工具管理的。CLI工具...在 TMUX 会话中运行这些计算机。

问:我找不到任何 Ansible 连接插件来连接到 tmux 会话。实现这一目标的最佳方法是什么?

答:最好的方法是编写一个 Ansible 模块,该模块将使用 CLI 工具来管理这些虚拟机。这意味着,而不是使用 tmux 来运行 CLI

admin <---SSH---> host <----> tmux <---> custom_CLI <---> VM

您将从 Ansible 模块运行 CLI

admin <---SSH---> host <----> tashraf.custom_CLI <---> VM

看:


最简单的解决方案是尝试从 Ansible 模块命令shell 运行 CLI。您可能需要让 CLI 在后台运行。请参阅异步操作和轮询。但是,很可能您必须将 CLI 作为守护程序运行。由您决定什么更好。编写 Ansible 模块或更新 CLI 以使用 Ansible modules 命令或 shell。

评论

0赞 Talha Ashraf 10/9/2023
使用 CLI 工具,我只准备创建、连接和删除 QEMU 虚拟机。它没有在虚拟机上执行命令的选项。为此,我必须连接到虚拟机,提供成功连接的凭据,然后执行命令。
0赞 Talha Ashraf 10/9/2023
我正在考虑为 CLI 工具编写一个自定义连接插件。我找不到任何关于编写自定义连接插件的官方文档。你知道吗?
0赞 Vladimir Botka 10/9/2023
我愿意。 开发人员指南 -> 开发插件 -> 开发特定插件类型 -> 连接插件。