2017-10-31 2 views
0

-Code

ein Terraforming-Modul vor:Terraforming: Ausgabe ein Feld aus einem Modul

module "blah-asg" { 
    source = "asg" 

    asg_max_size  = 1 
    asg_min_size  = "${var.min_blah}" 
    ... 
} 

Mein Problem

Wie kann ich output Variablen von ihm?

Was habe ich versucht,

output "blah-es-asg" { 
    value = "${asg.blah-asg.arn}" 
} 

die mit

fehlgeschlagen

Fehler beim Abrufen von Plugins: Modul root: 1 Fehler (n) aufgetreten: * output 'blah-asg': unbekannt Ressource ' asg.blah‘bezeichnet in variable asg.blah-asg.arn

Meine Frage

Wie kann ich Modulfelder in Terraform ausgeben?

Antwort

2

Das Modul selbst weiß nichts über den Namen blah-asg - das ist nur in dem Skript, das es aufruft - in der Tat könnte es mehrmals mit anderen Namen und Parametern aufgerufen werden.

Die Ausgabe sollte nur die Dinge innerhalb des Moduls auf die gleiche Weise referenzieren wie an anderen Stellen im selben Modul. wenn Sie die Ausgabe der arn der folgenden Ressource wollte zum Beispiel:

resource "aws_lb" "test" { 
    # ... 
} 

Sie würden verwenden:

output "blah-es-asg" { 
    value = "${aws_lb.test.arn}" 
} 

Beachten Sie, dass der Ausgang an der Seite definiert wird, um den Rest des Moduls Code, nicht in das Skript, das es aufruft.

Diese Ausgabe kann dann durch das Skript verwendet, um das Modul als ${module.blah-asg.blah-es-asg}

1

So rufen Zuerst müssen Sie Ausgang setzen im Modul asg

$ cat asg/output.tf 

output "blah-es-asg" { 
    value = "${aws_autoscaling_group.blah-asg.arn}" 
} 

Dann mit source = "asg" Sie das Modul aufrufen,

module "blah-asg" { 
    source = "asg" 

    asg_max_size  = 1 
    asg_min_size  = "${var.min_blah}" 
    ... 
} 

Sie können es jetzt mit diesem Format im aktuellen Code ausgeben.

output "blah-es-asg" { 
    value = "${module.blah-asg.blah-es-asg}" 
} 
Verwandte Themen