使用 VMware REST Ansible 集合自动执行 RHEL 8 安装
使用 VMware REST Ansible 集合自动执行 RHEL 8 安装
在 IT 基础设施中管理虚拟机通常是一项常见的任务,尤其是 VMware 虚拟化技术已经存在了 20 多年。VMware 管理员花费大量时间来自动创建、管理和删除包含各种操作系统的虚拟实例。Red Hat Enterprise Linux 就是一种经常驻留在 VMware 基础设施上的操作系统。
随着 VMware REST API 的引入,我们最近宣布了 vmware.vmware_rest
集合的初始版本,用于生产使用。与 community.vmware 集合不同,vmware.vmware_rest
集合基于下一代 VMware REST API。这个新的集合不再需要任何第三方 Python 绑定来与 VMware 基础设施通信。新集合中引入的很大一部分是支持自动执行虚拟机操作。
在这篇博文中,我将向您展示 VMware 用户如何使用 vmware.vmware_rest.vcenter_vm
模块和有效的 Kickstart 文件来自动安装 Red Hat Enterprise Linux 8 (RHEL 8)。
场景需求
对于这种情况,我们将假设以下需求
- vCenter 7.0.1 或更高版本,至少有一个 ESXi
- RHEL 8 安装 DVD
- Ansible
- 安装了最新版本的 vmware.vmware_rest 集合
准备安装 ISO 文件
我们将使用通过 iso 镜像文件获取的 Kickstart 文件来自动安装 RHEL 8。我们不会讨论 Kickstart 文件的创建和管理,因为这已经在文档中介绍。您可能想访问Kickstart 信息访问实验室,以刷新您的知识。
收集有关基础设施的信息
我们将使用环境变量来指定 VMware 凭据。这将使剧本简洁明了。为此,您需要指定以下环境变量
- VMWARE_HOST
- VMWARE_USER
- VMWARE_PASSWORD
- VMWARE_VALIDATE_CERTS
现在让我们从我们的剧本开始,它将在 vCenter 中创建虚拟机。vmware.vmware_rest 集合中的所有模块都使用 VMware 管理对象 ID (MoID) 来标识和引用 VMware 对象。MoID 在给定的 vCenter 中是唯一的,因此无需指定名称和文件夹。
我们需要提供虚拟机将要放置的位置的信息。此信息包括集群、数据存储、文件夹和资源池的 MoID。我们可以使用 vmware.vmware_rest 集合中的现有模块来收集此信息。
- name: Get Cluster info vmware.vmware_rest.vcenter_cluster_info: filter_names: - "{{ cluster_name }}" register: cluster_info - name: Get Resource info for {{ cluster_name }} vmware.vmware_rest.vcenter_cluster_info: cluster: "{{ cluster_info.value[0].cluster }}" register: resource_pool_info - name: Get datastore info vmware.vmware_rest.vcenter_datastore_info: filter_names: - "{{ datastore_name }}" register: datastore_info - name: Get folder info vmware.vmware_rest.vcenter_folder_info: filter_names: - '{{ folder_name }}' register: folder_info
我们将需要有关标准端口组的信息,虚拟机将连接到该端口组。可以使用 vmware.vmware_rest.vcenter_network_info 模块来收集有关标准端口组 MoID 的信息。
- name: Get a list of the networks with a filter vmware.vmware_rest.vcenter_network_info: filter_types: STANDARD_PORTGROUP filter_names: - "VM Network" register: network_info
创建虚拟机
一旦我们拥有创建虚拟机所需的所有信息,让我们继续使用创建虚拟机的模块 vcenter_vm
- name: Create a VM vmware.vmware_rest.vcenter_vm: boot: delay: 0 enter_setup_mode: false retry: false retry_delay: 10000 type: "BIOS" boot_devices: [] cdroms: - allow_guest_control: true backing: type: "ISO_FILE" iso_file: "[ds_200] iso/rhel_8.3_ks.iso" ide: master: true primary: true label: "CD/DVD drive 1" start_connected: true type: "IDE" cpu: cores_per_socket: 1 count: 1 hot_add_enabled: false hot_remove_enabled: false disks: - new_vmdk: capacity: 536870912 label: "Hard disk 1" scsi: bus: 0 unit: 0 type: "SCSI" guest_OS: "OTHER_LINUX_64" hardware_version: "VMX_13" memory: hot_add_enabled: true size_MiB: 4096 name: test_vm_3 nics: - start_connected: true type: VMXNET3 mac_type: GENERATED backing: type: STANDARD_PORTGROUP network: "{{ network_id }}" scsi_adapters: - label: "SCSI controller 0" scsi: bus: 0 unit: 7 sharing: "NONE" type: "PVSCSI" placement: datastore: '{{ datastore_id }}' folder: '{{ folder_id }}' resource_pool: '{{ resource_pool_id }}' register: vm_info
在这里,我们指定了创建一个具有 4 GB 内存和一个连接到“VM 网络”的单一 NIC 的虚拟机。此外,我们为该虚拟机附加了一个 CDROM,用于安装包含 Kickstart 文件的 DVD。
您可以使用以下任务开启虚拟机
- name: Turn the power-on the VM vmware.vmware_rest.vcenter_vm_power: state: start vm: '{{ vm_info.id }}'
开启虚拟机后,安装将作为默认选项启动,并使用给定的 Kickstart 文件。
启动菜单,Kickstart 文件作为默认选项
Linux 内核启动参数
安装新操作系统需要一些时间,具体取决于配置。您可以将这个新安装的虚拟机标记为模板,并可用于克隆操作。
结论和下一步行动
将此集合与 vmware.vmware_rest
相结合,Ansible 用户可以更好地管理 VMware 基础设施上的虚拟实例,从而实现更快的迭代和更轻松的维护。
Ansible 允许您将不同的技术与 VMware 基础设施连接起来,这些技术最终是您努力取得成功的必要条件。
vmware.vmware_rest
集合是 VMware 自动化的坚实基础,它将在不久的将来推出。我们一直在努力改进,帮助像您这样的用户以更简化、更快的速度完成工作。