Как бы вы использовали Внешний источник данных для вывода?
В соответствии с этими двумя проблемами это было бы невозможно из-за depends_on
, который мне нужен в данном случае. Я не вижу пути.
https://github.com/hashicorp/terraform/issues/16728 https://github.com/hashicorp/terraform/issues/11806
depends_on
необходим, потому что data
блоки запускаются до resource
, и вв этом случае нам сначала нужно resource
.
# Script allocating resources via internal API call
resource "null_resource" "allocate-resource" {
provisioner "local-exec" {
command = "python ${path.module}/scripts/api_allocation.py"
}
}
# API call to list the resources created in previous bloc
data "external" "params" {
program = ["python", "${path.module}/scripts/api_params.py"]
depends_on = ["null_resource.allocate-resource"]
}
# Output used by next layer to deploy a VPC
output "vpc_net_id" {
value = "${data.external.params.result["vpc_net_id"]}"
}
terraform plan
и terraform apply
работают, но я не могу использовать его для terraform destroy
Ошибка:
1 error occurred:
module.auto_subnetting.output.vpc_net_id: Resource 'data.external.params'
does not have attribute 'result' for variable 'data.external.params.result'
Единственный обходной путь, который я нашел на данный момент, - это заменить пустую строку перед уничтожением
output "vpc_net_id" {
value = ""
}
Примечание: клиент застрял с терраформой 0.11 на данный момент. Но 0.12 решения также приветствуются.