Использовать вывод состояния Terraform из другого проекта - PullRequest
2 голосов
/ 07 мая 2020

Я недавно обновил Terraform с 11.11 до 12.24, и после запуска 0.12upgrade доступ к удаленному выводу terraform_state больше не работает.

Я получаю следующую ошибку: этот объект не имеет атрибута с именем "subnet_id" "

Это моя конфигурация:

Repo 1 (создает сети, подсети и т. Д. c)

network 
| main.tf 
| output.tf

Содержимое вывода. tf (сверху):

output "subnet_ids" {
  value = openstack_networking_subnet_v2.openstack-subnet.*.id
}

output "network_ids" {
  value = openstack_networking_network_v2.openstack-networks.*.id
}

Запуск Вывод Terraform в приведенном выше репо, дает мне следующий вывод (измененные идентификаторы):

network_ids = [
  "08adfe73-dfg5-404d-958e-e8db73121531",
  "c0b561e5-320c-46b3-b328-98723f54ef82",
  "200eb570-b734-4b18-9250-6ckae90ea0e1",
  "84c43fc5-771c-4c79-8670-3d858788661e",
]
subnet_ids = [
  "f5df394f-d542-492a-a224-eefb998536ac",
  "f0f5d2fe-e83c-4041-971a-bba34870d5de",
  "89e966b1-826e-483d-b312-bb7aa9893a02",
  "76d6dfda-8161-4961-89a6-39aeeb82db3c",
]

Repo 2 (Создает вычислительную платформу)

infrastructure
| main.tf
  | modules 
    | compute
      | main.tf

Содержимое файла main.tf :

...
data "terraform_remote_state" "base_networking_a" {
  backend = "s3"
  config = {
    bucket               = "terraform-state"
    workspace_key_prefix = "network-terraform-state/${var.environment}a"
    key                  = "terraform.tfstate"
    region  = "ap-southeast-2"
    profile = "aws_profile"
  }
}
...
resource "openstack_lb_loadbalancer_v2" "k8s-loadbalancer-a" {
  name          = var.loadbalancer_name
  vip_subnet_id = "data.terraform_remote_state.base_networking_a.outputs.subnet_ids[2]"
}

В качестве дополнительного метода при выводе содержимого с использованием файла terraform со следующим содержимым:

output "net" {
    value = data.terraform_remote_state.base_networking_a.outputs.*
}

Затем я получаю следующий результат:

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

net = [
  {},
]

Любые идеи, как получить доступ к этим значениям, хранящимся в удаленном состоянии, или что я делаю неправильно ?

...