如何将IPv4地址传递给Terraform Provisioner Local-exec

时间:2018-12-28 04:31:23

标签: terraform

我正试图做

  

地形应用

但出现错误

  

发生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}"
    }
}

谢谢!

1 个答案:

答案 0 :(得分:2)

对于本地执行人员配置者,您可以使用self关键字。在这种情况下,它将是{self.ipv4_address}

我的猜测是,如果您没有将count=10放入testvm小滴中,您的代码片段将奏效。您还可以使用${count.index}

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

还发现this github issue可能对您有帮助。

希望有帮助