【发布时间】:2019-04-18 22:13:08
【问题描述】:
我对 terraform 非常陌生,并且正在尝试探索。我正在使用 digitalocean 作为资源。我能够创建液滴,现在想用一些软件来配置它。但无法与之建立联系。
我在笔记本电脑上使用虚拟机,所以想使用我的私人 SSH 密钥来访问 Droplet。所以我将我的 SSH 密钥复制到 terraform 机器上的文件中并给出它的路径。以下是我的配置:
provider "digitalocean" {
token = "${var.do_token}"
}
resource "digitalocean_droplet" "web" {
name = "web"
size = "${var.size}"
image = "${var.image}"
region = "${var.region}"
ssh_keys = [23625200]
private_networking = "true"
}
connection {
user = "root"
type = "ssh"
private_key = "${file("/root/id_rsa")}"
timeout = "2m"
}
我的笔记本电脑私钥可通过 terraform 机器在 /root/id_rsa 文件中使用。
我在尝试验证或计划时遇到以下错误:
Error: Unknown root level key: connection
你能帮我看看我在这里做错了什么吗?
提前致谢。
【问题讨论】:
-
您是否尝试通过 SSH 自动执行某些操作,例如在创建 droplet 时安装一些软件?或者您只是想访问它以进行临时连接?如果是前者,那么你需要定义这个connection as part of a provisioner。如果是后者,你根本不需要它。
-
@ydaetskcoR,是的..一旦 SSH 连接成功,我也会安装一些软件,因为我们也会通过 terraform 进行配置。
-
@ydaetskcoR,我阅读了一些文章,所有文章都表明我们可以在 ``resource
. I will define the connection insideprovisioner` 中定义连接,但我还有一个问题,我们需要在每个provisioner中定义连接,如果我们在单个.tffile 中使用多个配置器?