我使用了以下內容:Terraform模塊AWS訪問鍵
- 的Windows 10
- Visual Studio代碼v1.17.0
- Terraform v0.10.3
- AWS
我Terraform非常新穎。我一直在閱讀一系列文章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
實質上,我只是想了解如何可以指定這些變量在我的所有模塊中使用。
根/ terraform.tfvars
aws_access_key = "XXX"
aws_secret_key = "YYYYYY"
aws_region = "eu-west-2"
根/管理/網絡/ 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
}
根/模塊/網絡/ 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]}"
}
根/模塊/網絡/ 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"
}
謝謝 - 是的,這看起來是錯誤的。但是,我將這些變量定義包含在'root/modules/network/vars.tf'中,但是我仍然得到相同的錯誤 – GreenyMcDuff
好吧,我想我已經知道了。我之後的行爲是一個已知問題https://github.com/hashicorp/terraform/issues/14940。所以我沒有在模塊中包含提供者模塊,而是將它包含在'root/management/network/main.tf'文件中 – GreenyMcDuff