From 49adc24290b7489e2e81abdf41cd87e274544412 Mon Sep 17 00:00:00 2001 From: hnaumann Date: Wed, 28 Aug 2024 09:21:26 +0200 Subject: [PATCH] inital commit --- main.tf | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 main.tf diff --git a/main.tf b/main.tf new file mode 100644 index 0000000..510ad3f --- /dev/null +++ b/main.tf @@ -0,0 +1,73 @@ +provider "aws" { + region = local.region +} + +locals { + region = "eu-central-1" + name = "hgn" ###change this to your name +} + +### create a key pair +module "key_pair" { + source = "terraform-aws-modules/key-pair/aws" + + key_name = "${local.name}-test-key" + create_private_key = true +} + + +### create a vpc +module "vpc" { + source = "terraform-aws-modules/vpc/aws" + version = "5.13.0" + + name = "${local.name}-vpc" + cidr = "10.0.0.0/16" + + azs = ["eu-central-1a", "eu-central-1b", "eu-central-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"] + + enable_nat_gateway = true + single_nat_gateway = true + + enable_dns_hostnames = true + enable_dns_support = true + + tags = { + terraform = "true" + environment = "test" + creator = "${local.name}" + } +} + +### create a security group +module "web_server_sg" { + source = "terraform-aws-modules/security-group/aws//modules/http-80" + name = "${local.name}-web-server-sg" + description = "Security group for web server of ${local.name}" + vpc_id = module.vpc.vpc_id + ingress_cidr_blocks = ["0.0.0.0/0"] + ingress_rules = ["http-80-tcp", "https-443-tcp", "ssh-tcp"] +} + + + +### create an ec2 instance +module "ec2_instance" { + source = "terraform-aws-modules/ec2-instance/aws" + name = "${local.name}-web-server" + + instance_type = "t2.micro" + key_name = module.key_pair.key_pair_name + monitoring = true + vpc_security_group_ids = [ module.web_server_sg.security_group_id ] + subnet_id = module.vpc.public_subnets[0] + user_data = file("userdata.sh") + + tags = { + Terraform = "true" + Environment = "test" + creator = "${local.name}" + } +} \ No newline at end of file