Ich verwende die folgenden:Terraforming Module aws Zugriffsschlüssel
- Windows-10
- Visual Studio-Code v1.17.0
- Terraforming v0.10.3
- AWS
I Ich bin Terraform sehr neu. Ich habe eine Reihe von Beiträgen here gelesen, die sehr hilfreich waren
Ich habe Probleme, wenn es darum geht, AWS Access Keys zu meinen Modulen zu übergeben. Ich habe eine sehr einfache Ordnerstruktur:
root
|__terraform.tfvars
|__management
|__network
|__main.tf
|__vars.tf
|__modules
|__network
|__main.tf
|__vars.tf
Der Inhalt der relevanten Dateien sind am Ende des Beitrags.
Aus dem root/management/network
Verzeichnis habe ich den terraform get
Befehl ausgeführt, um die Module zu importieren.
ich dann den folgenden Befehl ausführen, alles erwartet zu arbeiten:
terraform plan -var-file="../../terraform.tfvars" -state="../management.tfstate"
Allerdings bekomme ich folgende Fehlermeldung:
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}
ich hartzucodieren die Region versucht, aber dann wirft es nur die Derselbe Fehler aber für die aws_access_key
Im Wesentlichen versuche ich nur zu verstehen, wie ich diese Variablen für alle meine Module angeben kann.
root/terraform.tfvars
aws_access_key = "XXX"
aws_secret_key = "YYYYYY"
aws_region = "eu-west-2"
root/Verwaltung/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"
}
Dank - ja, das falsch aussieht. Allerdings habe ich diese Variablendefinitionen in 'root/modules/network/vars.tf' eingefügt, aber ich bekomme immer noch den gleichen Fehler. – GreenyMcDuff
OK, denke ich habe es herausgefunden. Das Verhalten, das ich suchte, ist ein bekanntes Problem https://github.com/hashicorp/terraform/issues/14940. Anstatt den Anbieterblock in das Modul aufzunehmen, habe ich ihn einfach in die Datei 'root/management/network/main.tf' aufgenommen – GreenyMcDuff