【问题标题】:Terraform: Using Local VariablesTerraform:使用局部变量
【发布时间】:2018-04-10 23:25:04
【问题描述】:

我试图理解: - 如何使用定义的本地人here

所以,我有一个这样的目录结构: 我的例子/ 模块/ 测试/ 安全组/ 主文件 vpc/ main.tf

my-examples/modules/test/vpc/main.tf中的代码:

variable "vpc_name" {
  default = "Test"
}

resource "aws_vpc" "test_vpc" {
  cidr_block            = "172.31.0.0/16"
  enable_dns_support    = true
  enable_dns_hostnames  = true

  tags {
    Name = "${var.vpc_name}:VPC"
    Environment = "${var.vpc_name}"
  }
}

locals {
  id_vpc = "${aws_vpc.test_vpc.id}"
}

module "security_groups" {
  source = "../security-groups"
  id_vpc = "${local.id_vpc}"
}

这个想法是能够像这样在my-examples/modules/security-group/main.tf 中使用id_vpc

resource "aws_security_group" "bastion_sg" {
  vpc_id = id_vpc
  name = "Bastion-SG"

  ingress {
    from_port = 22
    to_port = 22
    protocol = "tcp"
    cidr_blocks = ["0.0.0.0/0"]
  }

}

然而,我不断收到此错误: 错误:

  * 1 error(s) occurred:

  * module root: module security_groups: id_vpc is not a valid parameter

有人可以向我解释为什么不评估局部变量吗?将不胜感激。谢谢。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    模块security_groups 中的名称看起来不错。但是您确实对模块security_groups中的代码有疑问

    请更改

    来自

    resource "aws_security_group" "bastion_sg" {
      vpc_id = id_vpc
      name = "Bastion-SG"
      ...
    }
    

    resource "aws_security_group" "bastion_sg" {
       vpc_id = ${var.id_vpc}
      name = "Bastion-SG"
      ...
    }
    

    并在模块中定义变量id_vpc

    【讨论】:

      猜你喜欢
      • 2023-02-22
      • 2020-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-25
      • 2017-12-30
      • 1970-01-01
      相关资源
      最近更新 更多