2017-10-07 1 views
1

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" 
} 

Antwort

1

Ich glaube, was Sie vermissen Ihre Variablen deklarieren, bevor Sie sie verwenden. Ich würde erwarten, dass diese Definitionen in Ihrer vars.tf-Datei in den Ordnern modules/network und root/management enthalten sind.

Blick etwas wie folgt aus:

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

Hier ist ein Beispiel für variables.tf-Datei, die ich vermute, ich ist, was Vars.tf soll in diesem Projekt sein: https://github.com/terraform-aws-modules/terraform-aws-vpc/blob/master/variables.tf

Und mehr Einzelheiten zu den Variablen: https://www.terraform.io/docs/configuration/variables.html

+0

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

+0

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

Verwandte Themen