terraform - 是否可以将 terraform 远程状态包装到模块中并从状态中输出变量?
问题描述
在我的 terraform 代码中,我经常有多个“terraform_remote_state”来从不同的路径(网络、安全组)获取远程状态。所以为了避免这样的多个块:
data "terraform_remote_state" "network" {
backend = "artifactory"
config {
username = "${var.remote_state_config["user"]}"
password = "${var.remote_state_config["password"]}"
url = "${var.remote_state_config["url"]}"
repo = "${var.remote_state_config["repo"]}"
subpath = "the_path"
}
}
data "terraform_remote_state" "security_group" {
...
}
我想我会定义一个这样的模块:
variable remote_state_config {
type = "map"
}
data "terraform_remote_state" "network" {
backend = "artifactory"
config {
username = "${var.remote_state_config["user"]}"
password = "${var.remote_state_config["password"]}"
url = "${var.remote_state_config["url"]}"
repo = "${var.remote_state_config["repo"]}"
subpath = "the_path"
}
}
output "private_subnets" {
value = "${data.terraform_remote_state.network.private_subnets}"
}
output "vpc_id" {
value = "${data.terraform_remote_state.network.vpc_id}"
以后像这样使用它:
module "remote-network" {
source = "../../remote-state-network"
remote_state_config = "${var.remote_state_conf}"
}
...
vpc_id = "${module.remote-network.vpc_id}"
...
但是运行会导致如下错误消息:
module.remote-network.output.vpc_id: Resource 'data.terraform_remote_state.network' does not have attribute 'vpc_id' for variable 'data.terraform_remote_state.network.vpc_id'
我正在使用 terraform 0.11.3
解决方案
这是因为您在此处引用的远程状态 ( data "terraform_remote_state" "network"
) 没有output
withvpc_id
名称。顺便说一句,错误消息中明确说明了这一点。
引用的状态文件的相应 Terraform 代码network
应具有以下定义:
output "vpc_id" {
value = "...."
}
推荐阅读
- java - 将 Apache HttpClient 4.5 配置为 Axis2 存根中的传输发送方
- elasticsearch - 基于阶段 Elasticsearch 在索引翻转上添加别名
- access-control - 文档权限 Content Engine API
- javascript - 从模式的下拉列表中更新选择输入文本?
- java - 在 Java 中以字节为单位接收浮点值
- python - 完成后如何重置线程
- python - 年/季度到日期时间数据类型
- javascript - 是否可以将 js 脚本与 laravel crontab 一起使用?
- sql - SQL Server,查询多个表以获取特定日期数据的有效方法
- css - 是否总是在新值之前应用新转换?