【问题标题】:How to pass IPv4 address to terraform provisioner local-exec如何将 IPv4 地址传递给 terraform 供应商 local-exec
【发布时间】:2019-05-25 23:51:38
【问题描述】:

我正在尝试做

地形应用

但低于错误

发生了 1 个错误:

  • digitalocean_droplet.testvm[0]:找不到变量的资源“digitalocean_droplet.testvm” 'digitalocean_droplet.testvm.ipv4_address'

Terraform 在遇到错误时不会自动回滚。 相反,您的 Terraform 状态文件已部分更新为任何 成功完成的资源。请解决上面的错误 并再次申请以逐步更改您的基础架构。

如何将创建的 droplet 的公共 ip 传递给配置器 local-exec 命令。

下面是我的 .tf 文件

provider "digitalocean" {
  token = "----TOKEN----"
}

resource "digitalocean_droplet" "testvm" {
    count = "10"
    name = "do-instance-${count.index}"
    image = "ubuntu-16-04-x64"
    size = "512mb"
    region = "nyc3"
    ipv6 = true
    private_networking = false
    ssh_keys = [
      "----SSH KEY----"
    ]
    provisioner "local-exec" {
        command = "fab production deploy ${digitalocean_droplet.testvm.ipv4_address}"
    }
}

提前致谢!

【问题讨论】:

    标签: terraform


    【解决方案1】:

    对于 local-exec 供应商,您可以使用 self 关键字。在这种情况下,它将是{self.ipv4_address}

    我的猜测是,如果您不将 count=10 放入 testvm 液滴中,您的 sn-p 就会起作用。你也可以使用${count.index}

    更多信息:https://www.terraform.io/docs/provisioners/

    另外,发现 this github issue 可能对您有帮助。

    希望对你有帮助

    【讨论】:

    • 感谢安迪的回复。我想部署 10 个液滴,这就是为什么通过 count=10
    • 是的,我想。我发现的 github 问题正好解决了您的问题。
    • 成功了({self.ipv4_address})。非常感谢安迪,你拯救了我的一天:)
    • 不错。很高兴我能帮助@rahulb
    • 无论数量多少,您都需要self
    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 1970-01-01
    • 2020-07-01
    • 2020-10-24
    • 2020-07-07
    • 1970-01-01
    • 2019-05-05
    • 1970-01-01
    相关资源
    最近更新 更多