第 7 章 部署自定义镜像

为 VMWare vSphere 私有云创建自定义镜像后,您可以将镜像部署到 VMware vSphere。对于 Guest 镜像(.qcow2)和安装程序(.iso),您可以下载这些镜像并将其部署到虚拟机。

7.1. 上传 VMDK 镜像并在 vSphere 中创建 RHEL 虚拟机

创建镜像后,您可以使用 CLI 将其部署到 VMware vSphere。然后,您可以创建一个虚拟机并登录它。

先决条件

  • 您已配置了 govc VMware CLI 工具客户端。

    • 要使用 govc VMware CLI 工具客户端,您必须在环境中设置以下值:

      GOVC_URL
      GOVC_DATACENTER
      GOVC_FOLDER
      GOVC_DATASTORE
      GOVC_RESOURCE_POOL
      GOVC_NETWORK

流程

  1. 访问您下载 .vmdk 镜像的目录。
  2. 创建一个名为 metadata.yaml 的文件。在此文件中添加以下信息:

    instance-id: cloud-vm
    local-hostname: vmname
  3. 创建一个名为 userdata.yaml 的文件。在文件中添加以下信息:

    #cloud-config
    users:
    - name: admin
      sudo: "ALL=(ALL) NOPASSWD:ALL"
      ssh_authorized_keys:
      - ssh-rsa AAA...fhHQ== your.email@example.com
    • ssh_authorized_keys 是您的 SSH 公钥。您可以在 ~/.ssh/id_rsa.pub 中找到 SSH 公钥。
  4. metadata.yamluserdata.yaml 文件导出到环境中,使用 gzip 压缩,使用 base64 编码,如下所示:后续步骤中将用到它们。

    export METADATA=$(gzip -c9 <metadata.yaml | { base64 -w0 2>/dev/null || base64; }) \
    USERDATA=$(gzip -c9 <userdata.yaml | { base64 -w0 2>/dev/null || base64; })
  5. 使用 metadata.yamluserdata.yaml 文件在 vSphere 上启动镜像:

    1. .vmdk 镜像导入到 vSphere :

      $ govc import.vmdk ./composer-api.vmdk foldername
    2. 在 vSphere 中创建虚拟机而不开机:

      govc vm.create \
      -net.adapter=vmxnet3 \
      -m=4096 -c=2 -g=rhel8_64Guest \
      -firmware=bios -disk=”foldername/composer-api.vmdk” \
      -disk.controller=ide -on=false \
       vmname
    3. 更改虚拟机以添加 ExtraConfig 变量,即 cloud-init 配置:

      govc vm.change -vm vmname \
      -e guestinfo.metadata="${METADATA}" \
      -e guestinfo.metadata.encoding="gzip+base64" \
      -e guestinfo.userdata="${USERDATA}" \
      -e guestinfo.userdata.encoding="gzip+base64"
    4. 打开虚拟机:

      govc vm.power -on vmname
    5. 检索虚拟机 IP 地址:

      HOST=$(govc vm.ip vmname)
    6. 使用 cloud-init 文件配置中指定的用户数据,使用 SSH 登录到虚拟机:

      $ ssh admin@HOST