是否有任何脚本可以自动执行持久性磁盘格式化并附加到Google Cloud VM实例,而不是执行formatting & mounting steps?
永久磁盘是使用Terraform创建的,它还会创建VM,并使用attached_disk
命令将磁盘附加到该磁盘。
我希望在VM实例启动时运行一个简单的脚本,该脚本将:
答案 0 :(得分:4)
标记的答案对我不起作用,因为sudo blkid /dev/sdb
部分始终返回一个值(因此为true),脚本将退出。
我更新了脚本以检查创建的文件夹,并向脚本添加了安全选项。
#!/bin/bash
set -euxo pipefail
MNT_DIR=/mnt/disks/persistent_storage
if [[ -d "$MNT_DIR" ]]; then
exit
else
sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb; \
sudo mkdir -p $MNT_DIR
sudo mount -o discard,defaults /dev/sdb $MNT_DIR
# Add fstab entry
echo UUID=`sudo blkid -s UUID -o value /dev/sdb` $MNT_DIR ext4 discard,defaults,nofail 0 2 | sudo tee -a /etc/fstab
fi
如果要下载,这里是要点-https://gist.github.com/raj-saxena/3dcaa5c0ba0be88ed91ef3fb50d3ce85
答案 1 :(得分:3)
您是否考虑过在实例上使用startup script(我想您也可以在Terraform中添加启动脚本)?您可以使用if
循环来查找磁盘是否已格式化,如果没有,则可以尝试在链接的文档中运行格式化/挂载命令(我意识到您已建议您不遵循该手册文档中的步骤,但可以将其集成到启动脚本中以实现所需的结果。
运行以下输出,如果未格式化磁盘,则运行空字符串:
sudo blkid /dev/sdb
因此,您可以在启动脚本中使用它来发现磁盘是否已格式化,如果不是,则执行格式化/挂载。例如,您可以使用以下格式(注意***如果磁盘已格式化但未安装,则可能很危险,如果您的用例可能涉及可能已经格式化的现有磁盘,则不应使用):
#!/bin/bash
if sudo blkid /dev/sdb;then
exit
else
sudo mkfs.ext4 -m 0 -F -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/sdb; \
sudo mkdir -p /mnt/disks/newdisk
sudo mount -o discard,defaults /dev/sdb /mnt/disks/newdisk
fi