我使用 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
但事实并非如此。是否可以强制“阻止”行为?
答案1
Cloud-Init 所做的就是在虚拟机运行后运行您的命令,它不会阻止任何人在虚拟机运行时连接到机器,而且实际上没有办法做到这一点。
您可以查看编写脚本来禁用 NSG 上的 RDP 访问,直到 VM 完成配置为止。