【问题标题】:Terraform openstack instance doesn't return floating ipTerraform openstack 实例不返回浮动 ip
【发布时间】:2019-08-25 00:20:27
【问题描述】:

我正在使用 terraform 设置和 openstack 实例。我正在写入一个 ip 返回的文件,但由于某种原因它总是空的(我已经查看了 openstack consol 中的实例,并且所有的 ip、securitygroups 等都是正确的)

resource "openstack_compute_instance_v2" "my-deployment-web" {
  count = "1"
  name = "my-name-WEB"
  flavor_name = "m1.medium"
  image_name = "RHEL7Secretname"
  security_groups = [
    "our_security_group"]
  key_pair = "our-keypair"   


  network {
    name = "public"
  }

  metadata {
    expire = "2",
    owner = ""
  }

  connection {
    type = "ssh"
    user = "vagrant"
    private_key = "config/vagrant_private.key"
    agent = "false"
    timeout = "15m"
  }

  ##Create Ansible host in staging inventory
  provisioner "local-exec" {
    command =  "echo -e '\n[web]\n${openstack_compute_instance_v2.my-deployment-web.network.0.floating_ip}' > ../ansible/inventories/staging/hosts"
    interpreter = ["sh", "-c"]
  }    
}

生成的host文件只获取[web],不获取ip。有人知道为什么吗?

[web]

【问题讨论】:

  • 看看在local-exec 中使用模板而不是原始shell 命令。这对你来说会容易得多:terraform.io/docs/providers/template/index.html
  • 我也有,但同样的问题是变量无法解析为ip
  • 哦,那我想这会简化事情。如果我查看文档terraform.io/docs/providers/openstack/r/…,浮动 ip 不是一个属性,这可以解释它是空的。虽然有固定的 ip 属性。
  • 你是对的。我从一个例子中选择了它,但正如你所说的那样无效。对我来说,它改为使用“.access_ip_v4”。

标签: terraform openstack floating-ip


【解决方案1】:

修改变量来自

${openstack_compute_instance_v2.my-deployment-web.network.0.floating_ip}

${openstack_compute_instance_v2.my-deployment-web.network.0.access_ip_v4}

解决了这个问题。谢谢@Matt Schuchard

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 2017-03-17
    相关资源
    最近更新 更多