【问题标题】:Fail to use terraform provisioner with aws lightsail无法将 terraform provisioner 与 aws lightsail 一起使用
【发布时间】:2017-10-12 18:52:52
【问题描述】:

我无法将配置程序(“文件”和“远程执行程序”)与 aws lightsail 一起使用。对于“文件”配置程序,我不断收到连接被拒绝的端口 22 的拨号错误,“远程执行”给了我一个超时错误。我可以看到它一直在尝试连接到实例,但它就是无法连接到它。

对于文件配置器,我也尝试过直接使用scp,效果很好。

我正在使用的连接块的示例 sn-p 如下:

resource "aws_lightsail_instance" "han-mongo" {
  name              = "han-mongo"
  availability_zone = "us-east-1b"
  blueprint_id      = "ubuntu_16_04"
  bundle_id         = "nano_1_0"
  key_pair_name     = "my_key_pair"
  user_data         = "${file("userdata.sh")}" 

  provisioner "file" {
         source = "file.service"
         destination = "/home/ubuntu"
         connection {
            type = "ssh"
            private_key =  "${file("my_key.pem")}"
            user = "ubuntu"
            timeout = "20s"
        }
  }
}

【问题讨论】:

  • 回答这个问题将有助于查看更多配置。特别是围绕此供应商的resource "aws_lightsail_instance 和它所指的resource "aws_lightsail_key_pair"。 (当然,任何敏感信息都被编辑了!)
  • @MartinAtkins 我更新了脚本。实际上,我没有使用“aws_lightsail_key_pair”,而是在 Web 控制台中创建了一个密钥对,并直接在脚本中使用它。例如 my_key_pair,这个密钥对的私钥是 my_key.pem。

标签: amazon-web-services terraform amazon-lightsail


【解决方案1】:

除了身份验证信息外,还需要告诉 Terraform 应该使用哪个 IP 地址进行连接,如下所示:

connection {
  type        = "ssh"
  host        = "${self.public_ip_address}"
  private_key = "${file("my_key.pem")}"
  user        = "ubuntu"
  timeout     = "20s"
}

对于某些资源,Terraform 能够从资源属性中自动推断出一些连接详细信息,但目前 Lightsail 实例不支持此功能,因此需要明确指定 host 参数。

【讨论】:

  • 谢谢,今天晚些时候让我试试。
猜你喜欢
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 2021-10-13
  • 2021-05-25
相关资源
最近更新 更多