azure - 从 azure Linux VM 检索自定义数据

标签 azure azure-virtual-machine azure-sdk

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

在操作系统配置文件中,我填写了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))),
},

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

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

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

http://169.254.169.254/latest/user-data

最佳答案

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

检索虚拟机中的自定义数据 实例元数据服务以 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://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service#custom-data

关于azure - 从 azure Linux VM 检索自定义数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52920746/

相关文章:

azure - Windows Azure Active Directory 自动更改密码

azure - 使用 Visual Studio Online 进行 SlowCheetah 转换失败

azure - 如何将 azure VM 镜像移动到其他位置

java - 列出 Azure 上的 SQL Server 实例

java - Azure SDK 中的哪个 Java API 可以管理 PostgreSQL 服务器?

sql-server - SQL Azure - 连接失败 - 但没有问题?

azure - 为 Azure WebJob 部署子文件夹

azure - 在管道中使用 PowerShell 任务 Sysprep Azure VM

azure - 如何区分 Azure 临时存储驱动器与 Azure VM 上的其他驱动器?

azure - ServiceFabric SDK 安装失败