tf-aws-demo/prod/main.tf
2022-08-25 15:00:54 +02:00

84 lines
1.8 KiB
HCL
Executable File

provider "aws" {
profile = "default"
region = var.REGION
}
# Create VPC with NAT Gateway and route tables
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "3.14.2"
name = var.DEMO_VPC_NAME
cidr = var.DEMO_VPC_CIDR
azs = var.DEMO_VPC_AVAILABILITY_ZONES
private_subnets = var.DEMO_VPC_PRIVATE_SUBNET_CIDRS
public_subnets = var.DEMO_VPC_PUBLIC_SUBNET_CIDRS
enable_nat_gateway = true
single_nat_gateway = true
one_nat_gateway_per_az = false
tags = {
Terraform = "true"
Project = var.PROJECT_TAG
}
}
# Get VPC data
module "vpc_data" {
depends_on = [module.vpc]
source = "../modules/vpc_data"
VPC_NAME = var.DEMO_VPC_NAME
BASTION_HOST_AZ = var.DEMO_BASTION_HOST_AZ
}
# Create bastion host
module "bastion_host" {
source = "../modules/bastion_host"
VPC_ID = module.vpc_data.vpc.id
SUBNET_ID = module.vpc_data.bastion_host_subnet.id
INSTANCE_TYPE = var.DEMO_BASTION_HOST_TYPE
INSTANCE_NAME = var.DEMO_BASTION_HOST_NAME
KEY_NAME = var.DEMO_BASTION_HOST_KEY_NAME
}
data "aws_ami" "amazon-linux" {
most_recent = true
filter {
name = "name"
values = ["amzn2-ami-*-gp2"]
}
filter {
name = "architecture"
values = ["x86_64"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["amazon"]
}
# Create demo app
module "app" {
source = "../modules/app"
VPC_ID = module.vpc_data.vpc.id
VPC_SUBNETS_IDS = module.vpc_data.private_subnets.ids
EC2_IMAGE_ID = data.aws_ami.amazon-linux.id
EC2_TYPE = var.DEMO_APP_EC2_TYPE
EC2_KEY_NAME = var.DEMO_APP_EC2_KEY_NAME
ASG_MIN_SIZE = var.DEMO_APP_ASG_MIN_SIZE
ASG_MAX_SIZE = var.DEMO_APP_ASG_MAX_SIZE
}