【问题标题】:Bootstrap EC2 instance using template which references another template使用引用另一个模板的模板引导 EC2 实例
【发布时间】:2019-12-05 06:39:53
【问题描述】:

我正在尝试使用 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"
  }

}

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

【问题讨论】:

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


    【解决方案1】:

    您说得对,如果没有连接块,您将无法在此处使用文件配置器。您肯定需要通过 SSH 登录,并且由于您提到要在私有子网中部署,我建议您为 Terraform 支持的连接块配置堡垒主机:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-08
      • 1970-01-01
      相关资源
      最近更新 更多