我使用 Azure,我想cloud-init
在创建 VM 时使用它来安装一些软件。
以下是 的内容cloud-init.yml
:
#cloud-config
package_update: true
package_upgrade: true
runcmd:
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- apt update
- apt install -y docker-ce docker-ce-cli containerd.io
- usermod -aG docker azureuser
- curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
power_state:
mode: reboot
condition: True
这是az
我用来创建 VM 的命令:
az vm create \
--resource-group $GR_NAME \
--name $VM_NAME \
--image UbuntuLTS \
--admin-username azureuser \
--custom-data cloud-init.yml \
--generate-ssh-keys
当上述命令返回时,我可以ssh
进入机器,但我的安装过程仍在运行,cloud-init
实际上仅在大约 3 分钟后完成并且机器重新启动。
我希望虚拟机配置应该被阻止,cloud-init
但事实并非如此。是否可以强制“阻止”行为?
Cloud-Init 所做的只是在 VM 运行后运行您的命令,它不会阻止任何人在运行时连接到机器,并且没有真正的方法可以做到这一点。
在 VM 完成配置之前,您可以查看在 NSG 上禁用 RDP 访问的脚本。