2017-09-14 66 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中,然后从代码中的任何位置引用它。

相关问题