Terraform Openstack:使用与现有实例相同的安全组部署新实例

Terraform Openstack:使用与现有实例相同的安全组部署新实例,terraform,openstack,terraform-provider-openstack,Terraform,Openstack,Terraform Provider Openstack,假设我已经有一个已分配了安全组的现有主机。我可以通过以下方式检索主机的状态: data "openstack_compute_instance_v2" "host_data_01" { # ID for host A id = "88c96f9d-7951-4ab5-9e37-f1c5b33e8889" } 在statefile中,我可以看到分配了哪些安全组,所以我可以继续写下它们。但有没有办法将该主机的所有安全组分配给我要部

假设我已经有一个已分配了安全组的现有主机。我可以通过以下方式检索主机的状态:

data "openstack_compute_instance_v2" "host_data_01" {
  # ID for host A
  id = "88c96f9d-7951-4ab5-9e37-f1c5b33e8889"
}
在statefile中,我可以看到分配了哪些安全组,所以我可以继续写下它们。但有没有办法将该主机的所有安全组分配给我要部署的新实例

分配该集合的第一个安全组项的示例

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_groups输出作为变量分配给新主机:

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