2017-01-30 4 views
0

Versuchen, Terraform-Konsole, neue Funktion, in Betrieb zu nehmen. Ich chdir zu meinem Projekt mit tfstate und führen 'Terraform-Konsole'. Ich bin in der Lage, variable Werte, Daten und Ressourcen mit dem normalen Interpolationssystax zu erhalten. Module sind jedoch schwer zu knacken, ich kann es nicht richtig einsetzen - ich habe es versucht: module.name.attribute und es weiß nicht, nicht viele Beispiele zur Verwendung der Konsole im Web: -/Terraform-Konsole - wie Modul-Attributwert erhalten

Danke im Voraus.

Antwort

2

Obwohl es im Dokument nicht klar angegeben ist, scheint es, dass wir nicht auf lokale Variablen im Modul verweisen können und wir können nur die Ausgabe des Moduls sehen.

Das Folgende ist ein Beispiel:

$ tree 
. 
├── foo 
│   └── bar.tf 
├── main.tf 
└── terraform.tfstate 

1 directory, 3 files 

main.tf

provider "null" {} 

module "foo" { 
    source = "./foo" 
} 

foo/bar.tf

resource "null_resource" "bar" {} 

output "bar_id" { 
    value = "${null_resource.bar.id}" 
} 

terraform.tfstate

{ 
    "version": 3, 
    "terraform_version": "0.8.4", 
    "serial": 4, 
    "lineage": "9e66cc40-5dfa-4c4e-929e-bc02fa7db57e", 
    "modules": [ 
     { 
      "path": [ 
       "root" 
      ], 
      "outputs": {}, 
      "resources": {}, 
      "depends_on": [] 
     }, 
     { 
      "path": [ 
       "root", 
       "foo" 
      ], 
      "outputs": { 
       "bar_id": { 
        "sensitive": false, 
        "type": "string", 
        "value": "1810628649389143335" 
       } 
      }, 
      "resources": { 
       "null_resource.bar": { 
        "type": "null_resource", 
        "depends_on": [], 
        "primary": { 
         "id": "1810628649389143335", 
         "attributes": { 
          "id": "1810628649389143335" 
         }, 
         "meta": {}, 
         "tainted": false 
        }, 
        "deposed": [], 
        "provider": "" 
       } 
      }, 
      "depends_on": [] 
     }, 
     { 
      "path": [ 
       "root", 
       "hoge" 
      ], 
      "outputs": {}, 
      "resources": {}, 
      "depends_on": [] 
     } 
    ] 
} 

Es kann als module.foo.bar_id bezeichnet werden:

$ terraform console 
> module.foo.bar_id 
1810628649389143335 

Andere arbeiten nicht:

$ terraform console 
> null_resource.bar.id 
Resource 'null_resource.bar' not found for variable 'null_resource.bar.id' 

> module.foo.null_resource.bar.id 
Couldn't find output "null_resource.bar.id" for module var: module.foo.null_resource.bar.id