Terraform创建的EFS卷未安装到Terraform创建的堡垒主机(AWS)

时间:2019-08-23 13:31:53

标签: terraform nfs terraform-provider-aws amazon-efs terraform-template-file

我创建了两个模块,一个创建了一个efs卷,一个创建了一个或多个堡垒主机。

Link to efs module.

Link to bastion module.

efs模块成功创建了efs卷。堡垒模块成功创建了堡垒主机。

问题是我正在尝试使用用户数据模板/模板呈现器将EFS卷自动安装到堡垒主机。 Terraform会意识到这一点,并且在创建efs卷之前不会尝试构建堡垒主机。但是,该卷永远不会挂载到主机。实际上,模板的最后一行将创建一个/root/finished文件,该文件永远不会运行。我不确定是否正在发生某种竞赛情况。

这是模板的正文:

#!/bin/bash
MOUNT_LOCATION=${mount_location}
MOUNT_TARGET=${mount_target}
sudo timedatectl set-timezone UTC
sudo sleep 30
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y install nfs-common
sudo mkdir -p ${mount_location}
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 ${mount_target}:/ ${mount_location}
sudo touch /root/finished

这是模板渲染的主体:

data "template_file" "bastion_user_data" {
  template = "${file("../templates/bastion.sh")}"

  vars {
    mount_location = "${var.bastion_nfs_mount_point}"
    mount_target   = "${module.efs.efs-mount-target-dns}"
  }
}

如果在此之后进行操作,则可以使用状态文件中的信息手动安装卷。我还仔细检查了语法。实际上,完全相同的代码在几个月前就起作用了,但现在似乎失败了。是否有人看到明显的可能导致成功创建该卷但无法挂载的内容?模板/模板渲染在语法上有问题吗?堡垒主机正在运行ubuntu 16.04(LTS)。

0 个答案:

没有答案