【问题标题】:Mount a ebs_block_device using terraform使用 terraform 挂载 ebs_block_device
【发布时间】:2021-08-15 13:06:52
【问题描述】:

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

resource "aws_instance" "ec201" {
...
  ebs_block_device {
    device_name = "/dev/sdd"
    volume_type = "gp2"
    volume_size = 10
    delete_on_termination = true
    encrypted = true
  }
...

可以自动挂载吗? 我读过这个页面: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-using-volumes.html 和这个; Automatically mount an EBS volume upon starting an Amazon EC2 Linux instance

当我做一个:

> lsblk
NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
...
nvme1n1     259:0    0   10G  0 disk 
nvme0n1     259:1    0  250G  0 disk 
└─nvme0n1p1 259:2    0  250G  0 part /

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

问候

【问题讨论】:

  • 您需要运行remote-exec provisioner 连接到实例并运行命令来挂载它,或者让用户数据在首次启动时自动挂载它。
  • 是的。好的,但你有什么线索吗?因为,一旦创建,我在实例中看不到 /dev/sdd 。所以'我很困惑:(

标签: amazon-web-services amazon-ec2 terraform terraform-provider-aws


【解决方案1】:

如您所见,您的 SO 将“nvme1n1”读取为设备名称(而不是“/dev/sdd”)。

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

resource "aws_instance" "your-instance" {
  ..
  user_data              = file("user_data/ebs-mount.sh")
  ..
}

其中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' }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-25
    • 2023-02-02
    • 2020-08-04
    • 1970-01-01
    • 2017-12-01
    • 2019-10-19
    • 1970-01-01
    • 2021-01-22
    相关资源
    最近更新 更多