terraform控制台 - 如何获取模块属性值

时间:2017-01-30 16:13:14

标签: terraform

尝试使用terraform控制台,新功能。 我用tfstate和我的项目运行' terraform console'。 我可以使用常规插值systax获取变量值,数据和资源。但是,模块很难破解,我无法正确使用它 - 我试过:module.name.attribute并且它不知道,在网上使用控制台的例子不多: - /

感谢您的期待。

1 个答案:

答案 0 :(得分:3)

虽然文档中没有明确说明,但似乎我们不能在模块中引用局部变量,我们只能看到模块的输出。

以下是一个例子:

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

1 directory, 3 files

main.tf

provider "null" {}

module "foo" {
  source = "./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": []
        }
    ]
}

可以称为module.foo.bar_id

$ terraform console
> module.foo.bar_id
1810628649389143335

其他人不行:

$ 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