无法将 Terraform Provisioner 与 aws lightsail 一起使用
Fail to use terraform provisioner with aws lightsail
我无法通过 aws lightsail 使用供应器("file" 和 "remote-exec")。对于 "file" 供应商,我一直收到连接拒绝连接到端口 22 的拨号错误,"remote-exec" 给我一个超时错误。我可以看到它一直在尝试连接到实例,但就是无法连接到它。
对于文件供应器,我也尝试过直接使用 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"
}
}
}
除了认证信息,还需要告诉Terraform应该使用哪个IP地址来连接,像这样:
connection {
type = "ssh"
host = "${self.public_ip_address}"
private_key = "${file("my_key.pem")}"
user = "ubuntu"
timeout = "20s"
}
对于某些资源,Terraform 能够从资源属性自动推断出一些连接详细信息,但目前 Lightsail 实例不支持此功能,因此有必要明确指定 host
参数。
我无法通过 aws lightsail 使用供应器("file" 和 "remote-exec")。对于 "file" 供应商,我一直收到连接拒绝连接到端口 22 的拨号错误,"remote-exec" 给我一个超时错误。我可以看到它一直在尝试连接到实例,但就是无法连接到它。
对于文件供应器,我也尝试过直接使用 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"
}
}
}
除了认证信息,还需要告诉Terraform应该使用哪个IP地址来连接,像这样:
connection {
type = "ssh"
host = "${self.public_ip_address}"
private_key = "${file("my_key.pem")}"
user = "ubuntu"
timeout = "20s"
}
对于某些资源,Terraform 能够从资源属性自动推断出一些连接详细信息,但目前 Lightsail 实例不支持此功能,因此有必要明确指定 host
参数。