diff --git a/README.md b/README.md index 9477f8d..d632745 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,7 @@ Launches EC2 instance, creates private key, and saves it on the machine. Usage: ``` -wait for it +terraform apply -var="instance_type=t2.nano" -var="instance_name=k3s-box" -var="instance_ami=ami-0889a44b331db0194" -var="availability_zone=us-east-1a" -var="create_ebs_block_device=false" - var="enable_ingress_http=false" -auto-approve ``` -Help: -``` -wait for it -``` \ No newline at end of file +Defaults of vars are set to the ones provided in "Usage" \ No newline at end of file diff --git a/ec2.tf b/ec2.tf index 4c5c77c..e109d22 100644 --- a/ec2.tf +++ b/ec2.tf @@ -1,21 +1,51 @@ +variable "instance_type" { + type = string + default = "t2.nano" +} + +variable "instance_name" { + type = string + default = "k3s-box" +} + +variable "instance_ami" { + type = string + default = "ami-0889a44b331db0194" # amazon linux us-east-1 +} + +variable "availability_zone" { + type = string + default = "us-east-1a" +} + +variable "create_ebs_block_device" { + type = bool + default = false +} + +variable "enable_ingress_http" { + type = bool + default = false +} + resource "aws_instance" "k3s_box" { - ami = "ami-0889a44b331db0194" # amazon linux us-east-1 - instance_type = "t3.small" + ami = var.instance_ami + instance_type = var.instance_type associate_public_ip_address = true key_name = aws_key_pair.k3s_box_kp.key_name ebs_block_device { device_name = "/dev/sdx" - volume_size = 10 volume_type = "gp2" delete_on_termination = true + count = var.create_ebs_block_device ? 1 : 0 } user_data = "${file("./script.sh")}" tags = { - Name = "k3s-box" + Name = var.instance_name } } @@ -30,7 +60,7 @@ resource "aws_vpc" "k3s_box_vpc" { resource "aws_subnet" "k3s_box_public_subnet" { vpc_id = aws_vpc.k3s_box_vpc.id cidr_block = "10.0.1.0/24" - availability_zone = "us-east-1a" + availability_zone = var.availability_zone tags = { Name = "k3s-box-public-subnet" @@ -40,7 +70,7 @@ resource "aws_subnet" "k3s_box_public_subnet" { resource "aws_subnet" "k3s_box_private_subnet" { vpc_id = aws_vpc.k3s_box_vpc.id cidr_block = "10.0.2.0/24" - availability_zone = "us-east-1a" + availability_zone = var.availability_zone tags = { Name = "k3s-box-private-subnet" @@ -93,23 +123,23 @@ resource "aws_security_group" "k3s_box_sg" { } # ALLOWS HTTPS and HTTP from anywhere -# ingress { -# description = "HTTPS" -# from_port = 443 -# to_port = 443 -# protocol = "tcp" -# cidr_blocks = ["0.0.0.0/0"] -# ipv6_cidr_blocks = ["::/0"] -# } + ingress { + description = "HTTPS" + from_port = 443 + to_port = 443 + protocol = "tcp" + cidr_blocks = var.enable_ingress_http ? ["0.0.0.0/0"] : [] + ipv6_cidr_blocks = var.enable_ingress_http ? ["::/0"] : [] + } -# ingress { -# description = "HTTP" -# from_port = 80 -# to_port = 80 -# protocol = "tcp" -# cidr_blocks = ["0.0.0.0/0"] -# ipv6_cidr_blocks = ["::/0"] -# } + ingress { + description = "HTTP" + from_port = 80 + to_port = 80 + protocol = "tcp" + cidr_blocks = var.enable_ingress_http ? ["0.0.0.0/0"] : [] + ipv6_cidr_blocks = var.enable_ingress_http ? ["::/0"] : [] + } egress { from_port = 0