Terraform Openstack:部署与现有实例具有相同安全组的新实例
Terraform Openstack: deploy new instance with same security groups as existing one
假设我已经有一个主机,并为其分配了安全组。我可以通过以下方式检索主机的状态:
data "openstack_compute_instance_v2" "host_data_01" {
# ID for host A
id = "88c96f9d-7951-4ab5-9e37-f1c5b33e8889"
}
在状态文件中,我可以看到分配了哪些安全组,因此我可以继续写下来。但是有没有办法将该主机的所有安全组分配给我要部署的新实例?
分配该组第一个安全组条目的示例。
security_groups = [
element(sort(data.openstack_compute_instance_v2.host_data_01.security_groups), 0)
]
在伪代码中我想要的是:
security_groups = [
for entry in data.module.module_name.security_groups
add entry
]
亲切的问候
罗马
休息几天后,我找到了非常简单的解决方案。
security_groups 元素的输出结构与输入的结构相同,因此您可以非常简单地将 security_group 输出作为变量分配给新主机:
resource "openstack_compute_instance_v2" "host_01" {
...
security_groups = data.openstack_compute_instance_v2.test_host.security_groups
...
}
data "openstack_compute_instance_v2 "test_host" {
id = "12345"
}
假设我已经有一个主机,并为其分配了安全组。我可以通过以下方式检索主机的状态:
data "openstack_compute_instance_v2" "host_data_01" {
# ID for host A
id = "88c96f9d-7951-4ab5-9e37-f1c5b33e8889"
}
在状态文件中,我可以看到分配了哪些安全组,因此我可以继续写下来。但是有没有办法将该主机的所有安全组分配给我要部署的新实例?
分配该组第一个安全组条目的示例。
security_groups = [
element(sort(data.openstack_compute_instance_v2.host_data_01.security_groups), 0)
]
在伪代码中我想要的是:
security_groups = [
for entry in data.module.module_name.security_groups
add entry
]
亲切的问候 罗马
休息几天后,我找到了非常简单的解决方案。
security_groups 元素的输出结构与输入的结构相同,因此您可以非常简单地将 security_group 输出作为变量分配给新主机:
resource "openstack_compute_instance_v2" "host_01" {
...
security_groups = data.openstack_compute_instance_v2.test_host.security_groups
...
}
data "openstack_compute_instance_v2 "test_host" {
id = "12345"
}