【发布时间】: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