【发布时间】:2019-09-16 15:00:58
【问题描述】:
当尝试执行 shell 脚本时,在 terraform 连接未建立时抛出配置程序“remote-exec”
我将 ami 用于 ubuntu-xenial-16.04,所以用户是 ubuntu
这是我用来执行 shell 脚本的最后一段代码:
resource "aws_instance" "secondary_zone" {
count = 1
instance_type = "${var.ec2_instance_type}"
ami = "${data.aws_ami.latest-ubuntu.id}"
key_name = "${aws_key_pair.deployer.key_name}"
subnet_id = "${aws_subnet.secondary.id}"
vpc_security_group_ids = ["${aws_security_group.server.id}"]
associate_public_ip_address = true
provisioner "remote-exec" {
inline = ["${template_file.script.rendered}"]
}
connection {
type = "ssh"
user = "ubuntu"
private_key = "${file("~/.ssh/id_rsa")}"
}
}
这是控制台中的内容:
aws_instance.secondary_zone (remote-exec): Connecting to remote host via SSH...
aws_instance.secondary_zone (remote-exec): Host: x.x.x.x
aws_instance.secondary_zone (remote-exec): User: ubuntu
aws_instance.secondary_zone (remote-exec): Password: false
aws_instance.secondary_zone (remote-exec): Private key: true
aws_instance.secondary_zone (remote-exec): SSH Agent: false
aws_instance.secondary_zone (remote-exec): Checking Host Key: false
感谢您的帮助...
【问题讨论】:
-
您的实例的安全组是否允许从您运行 Terraform 的计算机进行 SSH 访问?
-
是的,当然,我将配置器类型更改为“文件”,然后配置器“remote-exec”
-
这确实是一个环境问题,所以任何人都很难回答。但是作为一个要尝试的事情的清单:在不使用配置器时,您可以从运行 Terraform 的机器上使用该用户/密钥组合 SSH 到实例吗?运行provisioner时连接最终会超时吗?它是否以某种方式出错?
-
@ydaetskcoR 我认为你是对的。当我尝试从另一个位置应用它时,它连接正常。此外 template_file 已被弃用,因此我更改了代码。我分享它。
标签: amazon-ec2 terraform terraform-provider-aws