我正在运行以下命令在资源组上创建VM,但是登录时却看不到文件/root/hello.txt
。
az vm create --name "my_vm" --resource-group "my_rg" --image "centos" --admin-username "centos" --os-disk-size-gb "100" --vnet-name "my_vnet" --subnet "public-4" --ssh-key-values "ssh-rsa ..." --size "Standard_DS1_v2" --nsg "my_nsg" --custom-data '#!/bin/bash
touch /root/hello.txt
' --data-disk-sizes-gb "10"
当然,有些换行符粘贴得不好,但这没关系。 另外,我也不想传递文件路径。我需要传递文本,就像我使用AWS一样。
最终目标是在bash脚本下运行以增加OS磁盘的分区,该分区太小了。
#!/bin/sh
fdisk /dev/sda <<EOF
u
p
d
2
n
p
2
w
EOF
touch fdisk.log
reboot
xfs_growfs -d /dev/sda2
touch xfs.log
答案 0 :(得分:0)
首先,自定义数据是脚本或其他元数据,可以在提供时间 注入到Microsoft Azure虚拟机中。当前,Azure中有cloud-init preinstalled and configured images。它可以使用cloud-init配置文件或简单地使用Shell脚本处理在供应期间发送的自定义数据(只要它以#!
开头,然后cloud-init将执行它)。
在Linux上,此数据通过
ovf-env.xml
文件传递到VM, 在配置过程中将其复制到/var/lib/waagent
目录中。 较新版本的Microsoft Azure Linux代理也将复制 还可以将base64编码的数据存储到/var/lib/waagent/CustomData
方便。
阅读Custom Data and Cloud-Init on Microsoft Azure了解更多详细信息。
通常,自定义数据会与其他配置配置信息(例如新的主机名,用户名,密码,证书和密钥等)一起发送到VM。在这种情况下,我不会认为您可以在设置时使用自定义数据来调整OS磁盘分区的大小。似乎不可能在自定义数据中进行重新启动和交互式处理脚本。
有关更多参考,您可以阅读