使用引用另一个模板的模板引导 EC2 实例



我正在尝试使用 terraform 引导 AWS EC2 实例。我正在使用用户数据并引用一个文件,该文件具有用户数据的启动脚本(而不是内联(。此文件还引用了某些配置的另一个文件。实例位于私有子网中,我没有处理密钥。

到目前为止,我已经尝试使用文件配置器将配置文件复制到实例,然后我可以在启动脚本中引用文件路径。我怀疑 terraform 无法复制文件,因为我什至没有指定连接块,但是,由于我没有密钥,我不确定要在此处添加什么。

到目前为止的代码:

resource "aws_instance" "fe_proxy" {
  ami                     = "${var.fe_proxy}"
  instance_type           = "t2.micro"
  subnet_id               = "${aws_subnet.public_a.id}"
  monitoring              = true
  vpc_security_group_ids  = [ "${aws_security_group.fe_proxy.id}" ]
  iam_instance_profile    = "${aws_iam_instance_profile.proxy-instance-profile.name}"
  user_data = "${file("./start-up-scripts/install_proxy_deps.sh")}"
  provisioner "file" {
    source = "./start-up-scripts/haproxy.cfg"
    destination = "/tmp/haproxy.cfg"
  }
}

有没有办法解决这个问题?

您是对的,如果没有连接块,您将无法在此处使用文件配置器到达任何地方。您肯定需要 SSH 加入,并且由于您提到要部署在私有子网中,因此我建议您为 Terraform 支持的连接块配置堡垒主机:

https://www.terraform.io/docs/provisioners/connection.html

否则,我最好的建议是让您的用户数据脚本执行 curl(如果连接到 NAT 网关(或 S3 副本(如果您配置了 S3 VPC 终端节点,则可以在没有互联网访问的情况下执行此操作(,以这种方式拉取 haproxy 所需的文件。这意味着您需要远程存储源文件。

最新更新