【问题标题】:Unable to mount volume created by terraform无法安装由 terraform 创建的卷
【发布时间】:2019-07-11 15:56:53
【问题描述】:

我正在使用以下 terraform 模板

resource "aws_instance" "ec2" {
  ami           = "${var.ami_id}"
  instance_type = "${var.flavor}"
  key_name = "${var.key_name}"
  availability_zone = "${var.availability_zone}"
  security_groups= ["${var.security_group}"]
  tags = {Name = "${var.instance_name}"}
  }

resource "aws_volume_attachment" "ebs_volume" {
  device_name = "/dev/sdg"
  volume_id = "vol-006d716dad719545c"
  instance_id = "${aws_instance.ec2.id}"
}

在 aws 中启动实例并将卷附加到该实例。

当我执行此操作时,我看到实例已创建并且卷也已附加到实例。

ubuntu@ip-172-31-10-43:~$ lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
loop0     7:0    0   91M  1 loop /snap/core/6350
loop1     7:1    0   18M  1 loop /snap/amazon-ssm-agent/930
loop2     7:2    0 88.4M  1 loop /snap/core/6964
loop3     7:3    0   18M  1 loop /snap/amazon-ssm-agent/1335
xvda    202:0    0   50G  0 disk
└─xvda1 202:1    0   50G  0 part /
xvdg    202:96   0   20G  0 disk

但是当我尝试安装卷时,我得到了这个奇怪的错误

ubuntu@ip-172-31-10-43:~$ sudo mkdir -p /goutham
ubuntu@ip-172-31-10-43:~$ sudo mount /dev/xvdg /goutha,
mount: /goutha,: mount point does not exist.
ubuntu@ip-172-31-10-43:~$ sudo mount /dev/xvdg /goutham
mount: /goutham: wrong fs type, bad option, bad superblock on /dev/xvdg, missing codepage or helper program, or other error.

谁能帮我看看我在这个练习中犯了什么错误。

提前致谢。

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    您可以使用用户数据和 terraform 脚本在附加磁盘上创建文件系统。

    https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html

    https://www.terraform.io/docs/providers/aws/r/instance.html#user_data

    1. 创建一个 sh 文件,templates/mkfs.sh
    #!/bin/bash
    while ! ls /dev/xvdg > /dev/null
    do 
        sleep 5
    done
    
    if [ `file -s /dev/xvdg | cut -d ' ' -f 2` = 'data' ]
    then
        mkfs.xfs /dev/xvdg
    fi
    
    1. 地形脚本,
    data "template_file" "mkfs" {
      template = "${file("${path.module}/templates/mkfs.sh")}"
    }
    
    resource "aws_instance" "ec2" {
      ...
      user_data = "${data.template_file.mkfs}"
      ...
    }
    

    它将在创建 ec2 实例时运行,并等待磁盘挂载。之后它将创建文件系统。

    【讨论】:

      【解决方案2】:

      我想我想我错过了在卷中创建文件系统,因为我试图附加的卷是一个空卷

      所以这对我有帮助

      $ sudo mkfs -t xfs /dev/xvdg
      

      sudo mkdir -p /goutham
      
      sudo mount /dev/xvdg /goutham
      

      谢谢

      【讨论】:

        猜你喜欢
        • 2017-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-08-20
        • 2011-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多