我们希望听到您的声音!帮助我们洞悉 Ansible 生态系统的现状。
参加 Ansible 项目调查 2024

使用 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)。

场景需求

对于这种情况,我们将假设以下需求

  1. vCenter 7.0.1 或更高版本,至少有一个 ESXi
  2. RHEL 8 安装 DVD
  3. Ansible
  4. 安装了最新版本的 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 文件。

rhel blog one

启动菜单,Kickstart 文件作为默认选项

rhel blog two

Linux 内核启动参数

安装新操作系统需要一些时间,具体取决于配置。您可以将这个新安装的虚拟机标记为模板,并可用于克隆操作。

结论和下一步行动

将此集合与 vmware.vmware_rest 相结合,Ansible 用户可以更好地管理 VMware 基础设施上的虚拟实例,从而实现更快的迭代和更轻松的维护。

Ansible 允许您将不同的技术与 VMware 基础设施连接起来,这些技术最终是您努力取得成功的必要条件。

vmware.vmware_rest 集合是 VMware 自动化的坚实基础,它将在不久的将来推出。我们一直在努力改进,帮助像您这样的用户以更简化、更快的速度完成工作。