本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
VMware 环境没有 Amazon EC2 实例元数据服务 (IMDS),因此需要另一种配置 AL2 023 的方法。本节介绍如何使用seed.iso
虚拟CD-ROM驱动器的替代配置机制,该机制可在中找到 VMware vSphere。
此配置方法使用 VMware extraconfig
向其提供配置数据的机制cloud-init
。对于以下每个密钥,都必须提供相应的
属性。keyname
.encoding
可以将以下密钥提供给 VMware extraconfig
机制。
-
guestinfo.metadata
-
JSON 或 YAML 包含
cloud-init
元数据 -
guestinfo.userdata
-
A YAML 包含
cloud-config
格式的cloud-init
用户数据的文档。 -
guestinfo.vendordata
(可选) -
YAML 包含
cloud-init
供应商数据
相应的编码属性(guestinfo.metadata.encoding
、guestinfo.userdata.encoding
和 guestinfo.vendordata.encoding
)可以包含:
-
base64
-
属性的内容用
base64
编码。 -
gzip+base64
-
属性的内容先用
base64
编码再用gzip
压缩。
注意
该seed.iso
方法支持单独的(可选)network-config
配置文件。VMware guestinfo
网络配置的提供方式有所不同。其他信息将在下一节中提供。
如果需要明确的网络配置,则应将其以两种形式嵌入 metadata
YAML 或 JSON 属性:
-
network
-
包含 JSON 或 YAML 格式的编码网络配置。
-
network.encoding
-
包含上述网络配置数据的编码。对于
guestinfo
数据,cloud-init
支持的编码是相同的:base64
和gzip+base64
。
例 使用 VMware 用于传递配置的 vSphere govc
CLI 工具 guestinfo
-
按中所述准备
meta-data
user-data
、和可选network-config
配置文件NoCloud (seed.iso) cloud-init 在 KVM 上对亚马逊 Linux 2023 进行配置以及 VMware。 -
将配置文件转换为可用的格式 VMware
guestinfo
.# 'meta-data', `user-data` and `network-config` are the configuration # files in the same format that would be used by a NoCloud (seed.iso) # data source, read-them and convert them to VMware guestinfo # # The VM_NAME variable is assumed to be set to the name of the VM # It is assumed that the necessary govc environment (credentials etc...) are already set metadata=$(cat "meta-data") userdata=$(cat "user-data") if [ -e "network-config" ] ; then # We need to embed the network config inside the meta-data netconf=$(base64 -w0 "network-config") metadata=$(printf "%s\nnetwork: %s\nnetwork.encoding: base64" "$metadata" "$netconf") fi metadata=$(base64 -w0 <<< "$metadata") govc vm.change -vm "$VM_NAME" \ -e guestinfo.metadata="$metadata" \ -e guestinfo.metadata.encoding="base64" userdata=$(base64 -w0 <<< "$userdata") govc vm.change -vm "$VM_NAME" \ -e guestinfo.userdata="$userdata" \ -e guestinfo.userdata.encoding="base64"