如何使用 Terraform 挂载 ebs_block_device?

ami*_*mir 3 amazon-ec2 amazon-web-services terraform terraform-provider-aws

谁能建议我如何自动挂载使用 Terraform 创建的 EBS 卷并使其可用/custom?

\n
resource "aws_instance" "ec201" {\n...\n  ebs_block_device {\n    device_name = "/dev/sdd"\n    volume_type = "gp2"\n    volume_size = 10\n    delete_on_termination = true\n    encrypted = true\n  }\n...\n
Run Code Online (Sandbox Code Playgroud)\n

可以自动挂载吗?

\n

我已阅读这些页面:

\n\n

当我做一个:

\n
> lsblk\nNAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT\n...\nnvme1n1     259:0    0   10G  0 disk \nnvme0n1     259:1    0  250G  0 disk \n\xe2\x94\x94\xe2\x94\x80nvme0n1p1 259:2    0  250G  0 part /\n
Run Code Online (Sandbox Code Playgroud)\n

我有一个 10GB 分区未挂载。是否可以使用 terraform 自动安装它?

\n

小智 7

正如您所看到的,您的 SO 读取nvme1n1为设备名称(而不是/dev/sdd)。

因此,您可以user_data为您的 EC2 实例应用 cloud-init 指令:

resource "aws_instance" "your-instance" {
  ..
  user_data              = file("user_data/ebs-mount.sh")
  ..
}
Run Code Online (Sandbox Code Playgroud)

哪里user_data/ebs-mount.sh有下一个内容(考虑EBS盘是xfs格式):

#cloud-config
hostname: your-instance

runcmd:

- sudo mkdir /custom -p
- sudo echo '/dev/nvme1n1 /custom xfs defaults 0 0' >> /etc/fstab
- sudo mount -a

output : { all : '| tee -a /var/log/cloud-init-output.log' }
Run Code Online (Sandbox Code Playgroud)