Terraform 无法远程执行 (aws/ec2) [英] Terraform fails remote-exec (aws/ec2)

查看:35
本文介绍了Terraform 无法远程执行 (aws/ec2)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当尝试执行 shell 脚本时,在 terraform 连接未建立时抛出配置程序remote-exec"

When trying to execute a shell script throw provisioner "remote-exec" in terraform connection not establish

我将 ami 用于 ubuntu-xenial-16.04 所以用户是 ubuntu

I'm using ami for ubuntu-xenial-16.04 so the user is ubuntu

这是我用来执行 shell 脚本的最后一段代码:

This is the last code that I use to execute the shell script:

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

感谢您的帮助...

推荐答案

我也遇到了同样的问题.在您的连接块中尝试指定主机.

I had the same issue. In your connection block try specifying the host.

  connection {
    type        = "ssh"
    user        = "ubuntu"
    private_key = "${file("~/.ssh/id_rsa")}"
    host        = self.public_ip
  }

我还必须创建一条路线 &网关并将它们关联到我的 vpc.我仍在学习 terraform,但这对我有用.

I also had to create a route & gateway and associate them to my vpc. I'm still learning terraform, but this worked for me.

resource "aws_internet_gateway" "test-env-gw" {
  vpc_id = aws_vpc.test-env.id
}

resource "aws_route_table" "route-table-test-env" {
  vpc_id = aws_vpc.test-env.id
  route {
    cidr_block = "0.0.0.0/0"
    gateway_id = aws_internet_gateway.test-env-gw.id
  }
}

resource "aws_route_table_association" "subnet-association" {
  subnet_id      = aws_subnet.us-east-2a-public.id
  route_table_id = aws_route_table.route-table-test-env.id
}

这篇关于Terraform 无法远程执行 (aws/ec2)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆