我有一个关于启动后从 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
最佳答案
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
关于azure - 从 azure Linux VM 检索自定义数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52920746/