我在 Terraform 中有以下资源:
provider "docker" {
host = "tcp://${digitalocean_droplet.docker_server.ipv4_address}:2376/"
}
这依赖于在ipv4_address
连接到 docker 机器之前要知道的值。在供应另一个资源之前,该值是未知的:
resource "digitalocean_droplet" "docker_server" {
image = "docker-18-04"
name = "docker_server"
region = "nyc2"
size = "512mb"
private_networking = true
ssh_keys = [
var.ssh_fingerprint
]
connection {
user = "root"
type = "ssh"
private_key = file(var.pvt_key)
timeout = "2m"
}
}
当我运行时terraform plan
,我收到以下错误:
错误:初始化 Docker 客户端时出错:无法解析 docker 主机 ``
在 docker.tf 第 1 行,在提供者“docker”中:1:提供者“docker”{
这似乎ipv4_address
是空的,因为 docker 插件在配置之前尝试连接到 docker 机器。我如何告诉它在尝试连接之前等待机器配置好?
我试过的一件事:
provider "docker" {
host = "tcp://${digitalocean_droplet.docker_server.ipv4_address}:2376/"
depends_on = [
digitalocean_droplet.docker_server.ipv4_address,
]
}
当我这样做时,我收到此错误:
错误:提供程序块中的保留参数名称
在 docker.tf 第 4 行,在提供者“docker”中:4:depends_on = [
提供者参数名称“depends_on”保留供 Terraform 在未来版本中使用。
但是阅读更多内容depends_on
,我认为这不是解决方案。