2017-09-14 5 views
2

J'ai une structure Terraform comme:Accès role_arn dans un autre dossier que celui où le rôle a été créé

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

Je ne sais pas comment faire. Dans le fichier .tf de iam Je:

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

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

Je ne sais pas comment (ou si) je peux alors se référer à la svc_daily_process_role_arn de la .tf du firehose.

Répondre

2

Je crois comprendre que vous utilisez déjà des modules pour gérer les codes de terraform.

Donc dans votre cas, il devrait y avoir au moins deux modules.

continuous/common 
dataflow/firehose 

Dans le module continuous/common, vous avez défini output.tf

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

Vous créez les ressources avec module commun en premier.

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

Maintenant, vous êtes bien de renvoyer la sortie du module common avec les codes ci-dessous:

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

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

S'il vous plaît passer par-dessous les documents pour une meilleure compréhension.

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

1

Utilisation de modules Terraform.

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

D'un haut niveau font un appel aux deux sous-répertoires.

Dans le module 1 (votre rôle IAM) ajouter une sortie comme vous, mais assurez-vous que c'est le module 1. émis par

Dans le module 2 référence via le module $ {..}

0

Si vous n'êtes pas en utilisant des modules (ou même si vous êtes), vous pouvez utiliser remote state. Cela signifie que vous allez enregistrer votre état dans S3 ou Consul, puis vous y référer à partir de n'importe où dans votre code.