6.3. 部署一个容器镜像,并在 vSphere 中创建一个 RHEL 虚拟机
使用 bootc-image-builder 工具从 RHEL bootc 镜像创建虚拟机磁盘(VMDK)后,您可以使用 vSphere GUI 客户端将其部署到 VMware vSphere 中。部署创建一个虚拟机,该虚拟机可在引导前进行进一步自定义。
先决条件
- 您创建了一个容器镜像。请参阅 使用 bootc-image-builder 创建 QCOW2 镜像。
- 您已将容器镜像推送到一个可访问的存储库。
您已配置了 govc VMware CLI 工具客户端。要使用 govc VMware CLI 工具客户端,您必须在环境中设置以下值:
- GOVC_URL
- GOVC_DATACENTER
- GOVC_FOLDER
- GOVC_DATASTORE
- GOVC_RESOURCE_POOL
- GOVC_NETWORK
流程
创建一个
metadata.yaml文件,并在此文件中添加以下信息:instance-id: cloud-vm local-hostname: vmname创建一个
userdata.yam文件,并在该文件中添加以下信息:#cloud-config users: - name: admin sudo: "ALL=(ALL) NOPASSWD:ALL" ssh_authorized_keys: - ssh-rsa AAA...fhHQ== your.email@example.comssh_authorized_keys是您的 SSH 公钥。您可以在~/.ssh/id_rsa.pub中找到 SSH 公钥。将
metadata.yaml和userdata.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; })使用
metadata.yaml和userdata.yaml文件在 vSphere 上启动镜像:将
.vmdk镜像导入到 vSphere :$ govc import.vmdk ./composer-api.vmdk <_foldername_>在 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更改虚拟机以添加 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" .. Power-on the VM: govc vm.power -on vmname检索虚拟机 IP 地址:
HOST=$(govc vm.ip vmname)
验证
连接到在其中运行容器镜像的虚拟机。如需了解更多详细信息,请参阅连接到虚拟机。
使用
cloud-init文件配置中指定的用户数据,使用 SSH 登录到虚拟机:$ ssh admin@HOST