2017-05-13 48 views
0

我无法使用aws lightsail提供程序(包括“file”和“remote-exec”)。对于“文件”供应商,我不断收到拒绝连接的端口22的拨号错误,“remote-exec”给我一个超时错误。我可以看到它一直试图连接到实例,但它无法连接到它。未能使用terraform provisioner with aws lightail

对于文件提供程序,我也试过直接使用scp,它工作得很好。

我使用的连接块的示例代码段是以下几点:

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" 
     } 
    } 
} 
+0

要回答这个问题,这将有助于看到更多的配置。特别是'resource'aws_lightsail_instance'围绕着这个配置器和'resource“aws_lightsail_key_pair”'它指的是(当然有任何敏感信息被编辑!) –

+0

@MartinAtkins我更新了脚本。事实上,我没有使用“ aws_lightsail_key_pair“我在Web控制台中创建了一个密钥对,并直接在脚本中使用它,例如my_key_pair,这个密钥对的私钥是my_key.pem。 – Chen

回答

1

除了认证信息,这也是必要告诉Terraform其IP地址,应该用于连接,这样:

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

对于一些资源Terraform能够自动推断出一些从资源属性的连接细节,但目前不支持用于Lightsail实例,所以要规定有必要参数明确。

+0

谢谢,让我今天晚些时候尝试。 – Chen

+0

谢谢,像魅力:)。 – Chen