1

我有一个关于在启动后从 Azure Linux VM 访问自定义数据的问题。我目前正在使用 Azure GO SDK 以编程方式创建基于 CentOS Linux 7.5 的 VM。对于每个 VM,我都附加了一组唯一的环境变量,以便启动服务脚本可以访问环境。自定义数据只是一组环境变量,没有实际的脚本。

在 OS 配置文件中,我填写 base64 编码的字符串,如下所示:

OsProfile: compute.OSProfile{
	ComputerName:  to.StringPtr(p.InstanceName),
	AdminUsername: to.StringPtr(p.UserName),
	LinuxConfiguration: compute.LinuxConfiguration{
		SSH: compute.SSHConfiguration{
			PublicKeys: []compute.SSHPublicKey{
				{
					Path: to.StringPtr(
						fmt.Sprintf("/home/%s/.ssh/authorized_keys",
							p.UserName)),
					KeyData: to.StringPtr(p.SshPublicKey),
				},
			},
		},
	},
	CustomData: to.StringPtr(base64.StdEncoding.EncodeToString([]byte(p.UserData))),
},

我不清楚如何从 VM 内部访问自定义数据。

在 AWS 案例中,我们使用实例用户数据并从 EC2 实例访问数据,如下所示:

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html

http://169.254.169.254/latest/user-data

4

3 回答 3

3

Azure 实例元数据服务现在使 VM 能够访问其自定义数据。二进制数据必须小于 64KB,并以 base64 编码形式提供给 VM。有关如何使用自定义数据创建 VM 的详细信息,请参阅使用 CustomData 部署虚拟机。

在虚拟机实例元数据服务中检索自定义数据以 base64 编码形式向 VM 提供自定义数据。以下示例对 base64 编码的字符串进行解码。

curl -H "Metadata:true" "http://169.254.169.254/metadata/instance/compute/customData?api-version=2019-02-01&&format=text" | base64 --decode

参考文档:https ://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service#custom-data

于 2019-05-01T20:06:05.153 回答
0

好的,找到了答案。没有很好的记录。

https://azure.microsoft.com/en-us/blog/custom-data-and-cloud-init-on-windows-azure/

/var/lib/waagent/CustomData

于 2018-10-22T00:23:12.457 回答
-1

Azure 实例元数据服务提供有关可用于管理和配置虚拟机的运行虚拟机实例的信息。这包括 SKU、网络配置和即将发生的维护事件等信息。有关可用信息类型的更多信息,请参阅元数据类别。

Azure 的实例元数据服务是一个可供通过 Azure 资源管理器创建的 IaaS VM 访问的 REST 端点。端点在一个众所周知的不可路由 IP 地址 (169.254.169.254) 上可用,只能从 VM 内部访问。

于 2018-10-22T01:17:15.307 回答