thulium_drake.vmware
VMWare 的 Ansible 工具包
此角色提供多个用于 VMWare 集群的操作,目前具备以下功能:
- powerstate : 管理虚拟机电源状态
- provision_guest : 创建/编辑虚拟机和模板(可能有一些限制!)
- snap : 管理虚拟机快照
此角色可以将所有所需的操作委托给不同的机器,每个目标虚拟机甚至可以使用不同的机器。该机器在此角色中称为“API 主机”。
对于需要在您的环境中查找虚拟机的任务,提供了一个额外的变量,包含有关目标虚拟机的所有信息。这可以让您在快照名称等地方使用 VMWare 属性。该信息可以在“vm_info”变量中找到。
使用方法
此模块需要使用 PyVmomi 和 VMWare SDK,该角色将自行检测并尝试安装所有所需的依赖项。
有关如何手动安装这些依赖项的详细说明,请查看示例设置。
关于在 RHEL 8 上使用的说明
该角色在 RHEL8 上完美运行,但由于 vSphere SDK 所需的 Python 版本,您需要根据 vSphere 的主要版本更改 ansible_python_interpreter
。有关检测方法,请参见示例剧本。
- vSphere 7 SDK 需要 Python 3.3 及以上
- vSphere 8 SDK 需要 Python 3.8 及以上,这在 RHEL8 上需要自定义的
ansible_python_interpreter
该角色已经为 vSphere 7 准备了支持,但尚未经过测试。
多个 vSphere 集群?没问题!
该剧本配置为使用目标虚拟机的 hostvars 中的 vSphere 凭据和信息。因此,为多个 VMWare 集群配置仅需为特定主机/组定义这些凭据,就像任何其他变量一样。
当 Ansible 运行剧本时,它将查找有关特定目标虚拟机的所有所需信息。需要在 'group_vars' 中定义的每个主机的信息包括:
- vsphere_api_host
- vsphere_datacenter
- vsphere_host
- vsphere_password
- vsphere_username
电源状态
支持的状态包括:
- 使用 VMWare 工具或虚拟电源按钮开启虚拟机
- 使用 VMWare 工具或虚拟电源按钮关闭虚拟机
- 使用 VMWare 工具或虚拟电源按钮重新启动/重置虚拟机
该角色不会提示所需的信息,只能通过调用它的剧本提供:
- hosts: all
gather_facts: no
tasks:
- import_role:
name: vmware
vars:
target_action: "powerstate"
target_state: "powered-on"
run_once: yes
必需变量:
- target_action: 该角色提供的剧本之一
- target_state: 支持状态列表中的一种状态
快照
支持的操作包括:
- 创建快照(自动带有日期戳,或使用提供的名称)
- 删除指定或所有快照
- 恢复到指定快照,此脚本不会提供选择列表。
该角色不会提示所需的信息,只能通过调用它的剧本提供:
- hosts: all
gather_facts: no
tasks:
- import_role:
name: vmware
vars:
target_action: "snap"
target_state: "present"
target_snapshot_name: ansible_snap_stuff
run_once: yes
必需变量:
- target_action: 该角色提供的剧本之一
- target_state: 支持状态列表中的一种操作
可选变量:
- target_snapshot_name:
- 创建快照时:覆盖快照名称
- 恢复/删除快照时:目标快照以供删除
配置客户机
支持的操作包括:
- 基于模板或其他虚拟机创建新虚拟机
- 删除虚拟机
- 基于虚拟机创建新模板
该角色不会提示所需的任何信息,只能通过调用它的剧本提供。默认的硬件配置文件可在默认目录中找到。
要创建新虚拟机,请按照以下步骤操作:
- 创建一个变量文件,包含以下信息(有关详细信息,请查看 vmware_guest 模块的文档以及下文):
- 数据存储
- 虚拟机文件夹
- 模板(确保已存在)
- 硬盘设置和硬盘控制器类型
- 网络设置
- RAM 和 CPU 设置
- 虚拟机硬件版本和 BIOS 类型
- 在清单中添加新条目
- 运行剧本,例如:
---
- hosts: new-host.example.com
gather_facts: no
tasks:
- import_role:
name: vmware
vars:
target_action: provision_guest
target_state: present
target_esxi_hostname: esxi.example.com
run_once: yes
必需变量(大部分都有默认值):
- target_action: 该角色提供的剧本之一
- target_state: 支持状态列表中的一种操作。
- target_esxi_hostname / target_esxi_cluster : 虚拟机应运行的主机/集群名称。
- target_folder : 虚拟机应放置的文件夹
- target_networks : 带有网络设置的字典。请查看 vmware_guest 文档。
- target_disks : 带有磁盘布局的字典。请查看 vmware_guest 文档。
- target_ram : 带有内存设置的字典。请查看 defaults 文件的示例。
- target_cpu : 带有 CPU 设置的字典。请查看 defaults 文件的示例。
- target_template: 创建虚拟机的模板,可以是其他虚拟机或模板。
可选变量:
- target_force : 忽略任何警告或错误。
- target_scsi : 要使用的磁盘控制器类型。
- target_boot_firmware: 虚拟机的 BIOS 类型。
- target_vm_version : 要使用的 VMWare 硬件版本。
- target_customization : 创建后的虚拟机运行的任何 VMWare 自定义配置。请查看 vmware_guest 文档以获取更多信息。