使用 cloud-init 在 azure vm 上禁用临时磁盘

disable ephemeral disk on azure vm with cloud-init

Ubuntu azure 上的机器获得了临时磁盘,该磁盘正在自动安装在 /mnt

我不想在 /mnt 上安装这个临时驱动器,而是禁用它或将它移动到另一个位置。

我正在使用 packer 在 azure 上创建我的基础映像。

我试过像这样使用 cloud-init 来实现这一点:

mounts:
  - [/dev/sdb, null]

与 AWS 一样:

mounts:
  - [ephemeral0, null]

但这没有帮助,所以我尝试编辑 waagent.conf 并像这样重新启动机器: sed -i '/s/ResourceDisk.MountPoint=.*/ResourceDisk.MountPoint=\/ephemeral/' /etc/waagent.conf 但这也没有解决问题...

最终我想用 cloud-init 解决它,因为我想在 /mnt 上安装另一个驱动器(持久数据),但任何解决方案都可以。

谢谢

Ubuntu Azure 上的机器支持 cloud-init, 因此,使用一些 cloud-init 命令可以很容易地在 /etc/cloud/cloud.cfg.d/xyz.cfg 下创建一个简单的文件。

在这种情况下, 将临时驱动器安装到空点(或者换句话说 - 不要安装它)。

cat << 'EOF' > /etc/cloud/cloud.cfg.d/01-mounts.cfg
mounts:
  - [ ephemeral0, null ]
EOF

为了完全覆盖 Azure 的默认装载,您必须同时覆盖 ephemeral0 和 ephemeral0.1。

这对 Azure 来说工作得很好:

#cloud-config
mounts:
  - [ ephemeral0 ]
  - [ ephemeral0.1 ]

A​​WS 使用配置模块的顺序不同,我无法为其临时 NVME 磁盘定义挂载点。如果您使用的是非 NVME 磁盘,也许 BlockDeviceMapping for ephemerals 会对您有所帮助。

编辑:根据我的经验,如果您使用的是 cloud-init,则应禁用 waagent 以避免奇怪的错误配置。