【发布时间】:2020-06-30 13:26:23
【问题描述】:
我有一个要求,只有当某个文件存在于某个位置时,我才必须部署资源,否则它将跳过该资源。
就像这里是在某些 AWS 账户中部署某个身份提供商的代码。除了这个身份提供者(比如 abc),许多其他身份提供者也从同一个 main.tf 文件中部署,所以所有的都必须在这里。唯一的挑战是,在为任何帐户部署 IAM 层时,只有当abc-${var.aws_account}.xml 文件存在于saml_metadata_document 部分的文件路径中时,我们才会部署此特定资源。如果路径中不存在它,它将简单地忽略资源创建并继续执行其余代码。
resource "aws_iam_saml_provider" "xyz" {
name = "abc-${var.aws_account}"
saml_metadata_document = "${file("${path.module}/metadata/abc-${var.aws_account}.xml")}"
}
文件夹结构
IAM-Module
|
main.tf
variables.tf
metadata
|
abc-127367223.xml
abc-983297832.xml
abc-342374384.xml
如何在 Terraform 0.11 中进行条件检查以检查文件是否存在?
【问题讨论】:
-
如果您肯定无法切换到 Terraform 0.12,因此只对 0.11 的答案感兴趣,那么您应该使用
terraform0.11标记您的问题。如果不是,那么您应该删除 0.11 引用并接受当前答案。
标签: amazon-web-services azure-active-directory amazon-iam terraform-provider-aws terraform0.11