如何引用ec2模块中在vpc模块中创建的子网?
provider "aws" {
region = "us-east-2"
}
module "myvpc" {
source = "terraform-aws-modules/vpc/aws"
name = "my-vpc"
cidr = "10.0.0.0/16"
azs = ["us-east-1a", "us-east-1b", "us-east-1c"]
private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
assign_generated_ipv6_cidr_block = true
enable_nat_gateway = true
single_nat_gateway = true
enable_s3_endpoint = true
enable_dynamodb_endpoint = true
public_subnet_tags = {
Name = "overridden-name-public"
}
tags = {
Owner = "user"
Environment = "dev"
Name = "terraformtestvpc"
}
vpc_tags = {
Name = "vpc-name"
}
}
module "ssh_access_sg" {
source = "terraform-aws-modules/security-group/aws//modules/ssh"
name = "ssh-access"
description = "Security group for ssh access"
vpc_id = "${module.myvpc.vpc_id}"
ingress_cidr_blocks = ["0.0.0.0/0"]
}
data "aws_ami" "amazon_linux" {
most_recent = true
filter {
name = "name"
values = [
"amzn-ami-hvm-*-x86_64-gp2",
]
}
filter {
name = "owner-alias"
values = [
"amazon",
]
}
}
module "ec2" {
source = "terraform-aws-modules/ec2-instance/aws"
instance_count = 2
name = "example-normal"
ami = "${data.aws_ami.amazon_linux.id}"
instance_type = "t2.medium"
subnet_id = "${element(module.myvpc.private_subnets, 0)}"
vpc_security_group_ids = ["${module.ssh_access_sg.this_security_group_id}"]
associate_public_ip_address = true
}发布于 2018-09-19 05:56:42
要引用在模块中创建的值,您必须使用value语句来output该值。
然后,您可以使用${module.NAME.OUTPUT}访问该值。
有关详细信息,请参阅:https://www.terraform.io/intro/getting-started/modules.html
Module Outputs和:https://www.terraform.io/intro/getting-started/outputs.html节
发布于 2021-06-04 22:34:01
将VPC称为module.vpc.id
对于公共子网:将子网称为module.public.subnets
哪里是第一个子网和第二个子网等等.
对于私有子网,请将子网称为module.private.subnets
同样的想法,创建的每个子网都会被列在一个列表中,
下面是一个基于terraform的工作Instance.tf,一个模块VPC.tf:
# an example instance in the public subnet
resource "aws_instance" "public_instance" {
ami = data.aws_ami.amazon_linux_2.id
instance_type = "t2.micro"
subnet_id = module.vpc.public_subnets[0]
vpc_security_group_ids = [aws_security_group.public_instance_ssh.id]
key_name = "my-key"
user_data = <发布于 2021-08-06 14:29:37
您可以通过它的索引访问子网列表。module.myvpc.public_subnets或module.myvpc.private_subnets0
https://serverfault.com/questions/931609
复制相似问题