我正在尝试使用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"
}
}
有没有办法解决这个问题?
答案 0 :(得分:0)
您是正确的,如果没有连接块,此处的文件配置程序将无济于事。您肯定需要使用SSH,并且由于您已经提到要在专用子网中进行部署,因此我建议您为Terraform支持的连接块配置一个堡垒主机:
https://www.terraform.io/docs/provisioners/connection.html
否则,我最好的建议是让用户数据脚本卷曲(如果已连接到NAT网关)或S3副本(如果配置了S3 VPC端点,则可以在没有Internet访问的情况下进行此操作),以这种方式拉出您需要的代理文件。但这意味着您将需要远程存储源文件。