2017-09-14 41 views
2

在訪問role_arn我有一個Terraform結構,如:不同的文件夾,其中的角色創建

prod 
nonprod 
applications 
+-- continuous/common/iam/iam.tf <-- create the role 
+-- dataflow/firehose/firehose.tf <-- want to refer to the role created above 

我不知道如何做到這一點。在IAM的.tf文件我有:

resource "aws_iam_role" "policy_daily_process_role" { 
... 
} 

output "svc_daily_process_role_arn" { 
    value = "${aws_iam_role.policy_daily_process_role.arn}" 
} 

我不知道如何(或者)然後我就可以參考來自流水的.tf到svc_daily_process_role_arn。

回答

2

我的理解是,您已經使用模塊來管理terraform代碼。

所以在你的情況下,至少應該有兩個模塊。

continuous/common 
dataflow/firehose 

continuous/common模塊,您已經定義output.tf

output "svc_daily_process_role_arn" { 
    value = "${aws_iam_role.policy_daily_process_role.arn}" 
} 

所以將首先創建一個通用模塊的資源。

module "common" { 
    source = "./continuous/common" 
    ... 
} 

現在你的罰款從模塊common下面的代碼是指輸出:

module "firehost" { 
    source = "./dataflow/firehose" 

    some_variable = "${module.common.svc_daily_process_role_arn}" 
    ... 
} 

請通過下面的文件獲得更好的理解。

https://www.terraform.io/docs/modules/usage.html#outputs

0

如果你不使用的模塊(或者即使你是),你可以使用remote state。這意味着您可以將您的狀態保存在S3或Consul中,然後從代碼中的任何位置引用它。

相關問題