main.tf

resource "aws_vpc" "priv-devops" {
    cidr_block = var.KKE_VPC_CIDR
    instance_tenancy = "default"
    tags = {
        Name = "devops-priv-vpc"
    }
}
 
resource "aws_subnet" "priv-devops" {
    vpc_id = aws_vpc.priv-devops.id
    cidr_block = var.KKE_SUBNET_CIDR
    map_public_ip_on_launch = false
    tags = {
        Name = "devops-priv-subnet"
    }
}
 
resource "aws_network_interface" "devops-priv-ec2" {
  subnet_id   = aws_subnet.priv-devops.id
  private_ips = ["10.0.1.2"]
 
  tags = {
    Name = "primary_network_interface"
  }
}
 
resource "aws_instance" "priv-devops" {
  ami           = "ami-0c101f26f147fa7fd"
  instance_type = "t2.micro"
 
  network_interface {
    network_interface_id = aws_network_interface.devops-priv-ec2.id
    device_index         = 0
  }
 
  lifecycle {
    ignore_changes = [
        network_interface
    ]
 }
 
  tags = {
    Name = "devops-priv-ec2"
  }
 
}
 
resource "aws_security_group" "priv-ec2" {
  tags = {
    type = "priv-ec2-security-group"
  }
}
 
resource "aws_vpc_security_group_ingress_rule" "allow_tls_ipv4" {
  security_group_id = aws_security_group.priv-ec2.id
  cidr_ipv4         = aws_vpc.priv-devops.cidr_block
  ip_protocol       = "-1"
}
 
resource "aws_vpc_security_group_ingress_rule" "allow_tls_ipv6" {
  security_group_id = aws_security_group.priv-ec2.id
  cidr_ipv6         = aws_vpc.priv-devops.ipv6_cidr_block
  ip_protocol       = "-1"
}
 
resource "aws_vpc_security_group_egress_rule" "allow_all_traffic_ipv4" {
  security_group_id = aws_security_group.priv-ec2.id
  cidr_ipv4         = "0.0.0.0/0"
  ip_protocol       = "-1" # semantically equivalent to all ports
}
 
resource "aws_vpc_security_group_egress_rule" "allow_all_traffic_ipv6" {
  security_group_id = aws_security_group.priv-ec2.id
  cidr_ipv6         = "::/0"
  ip_protocol       = "-1" # semantically equivalent to all ports
}
 
resource "aws_network_interface_sg_attachment" "priv-ec2" {
  security_group_id    = aws_security_group.priv-ec2.id
  network_interface_id = aws_instance.priv-devops.primary_network_interface_id
}

variables.tf

variable "KKE_VPC_CIDR" {
    type = string
    default = "10.0.0.0/16"
}
 
variable "KKE_SUBNET_CIDR" {
    type = string
    default = "10.0.1.0/24"
}

outputs.tf

output "KKE_vpc_name" {
    value = aws_vpc.priv-devops.tags.Name
}
 
output "KKE_subnet_name" {
    value = aws_subnet.priv-devops.tags.Name
}
 
output "KKE_ec2_private" {
    value = aws_instance.priv-devops.tags.Name
}