首页 文章

Terraform模块具有访问密钥

提问于
浏览
1

我正在使用以下内容:

  • Windows 10

  • Visual Studio Code v1.17.0

  • Terraform v0.10.3

  • AWS

我'm very new to Terraform. I'已经阅读了一系列帖子here,这些都非常有帮助

在将AWS访问密钥传递给我的模块时,我很挣扎 . 我有一个非常基本的文件夹结构:

root
|__terraform.tfvars
|__management
    |__network
        |__main.tf
        |__vars.tf
|__modules
    |__network
        |__main.tf
        |__vars.tf

相关文件的内容位于帖子的底部 .

root/management/network 目录中,我运行了 terraform get 命令来导入模块 .

然后我运行以下命令,期望一切正常:

terraform plan -var-file="../../terraform.tfvars" -state="../management.tfstate"

但是,我收到以下错误:

Error asking for user input: 1 error(s) occurred:

* module.mgmt-network.provider.aws: 1:3: unknown variable accessed: 
var.aws_region in:

${var.aws_region}

我试过硬编码区域,但它只是抛出相同的错误,但对于 aws_access_key

本质上,我只是想了解如何指定这些变量以在我的所有模块中使用 .

root/terraform.tfvars

aws_access_key  = "XXX"
aws_secret_key  = "YYYYYY"
aws_region      = "eu-west-2"

root/management/network/main.tf

module "mgmt-network" {
    source                          = "../../modules/network"

    network_address_space           = "${var.network_address_space}"
    enable_dns_hostnames            = true
    public_subnet_1_address_space   = "${var.public_subnet_1_address_space}"
    map_public_ip_on_launch         = true
}

root/modules/network/main.tf

--   PROVIDER
provider "aws" {
    access_key  = "${var.aws_access_key}"
    secret_key  = "${var.aws_secret_key}"
    region      = "${var.aws_region}"
}

--   DATA
data "aws_availability_zones" "availability_zones" {}

resource "aws_vpc" "vpc" {
    cidr_block              = "${var.network_address_space}"
    enable_dns_hostnames    = "${var.enable_dns_hostnames}"
}

resource "aws_subnet" "public-subnet1" {
    cidr_block              = "${var.public_subnet_1_address_space}"
    vpc_id                  = "${aws_vpc.vpc.id}"
    map_public_ip_on_launch = "${var.map_public_ip_on_launch}"
    availability_zone       = "${data.aws_availability_zones.availability_zones.names[0]}"
}

root/modules/network/vars.tf

variable "aws_access_key" {}
variable "aws_secret_key" {}
variable "aws_region" {}

variable "network_address_space" {
    description = "cidr block of available ips in the network"
}

variable "enable_dns_hostnames" {
    description = "boolean to enable dns names"
}

variable "public_subnet_1_address_space" {
    description = "cidr block of available ips in the first public subnet"
}

variable "map_public_ip_on_launch" {
    description = "boolean to enable public ips in subnet"
}

1 回答

相关问题