diff --git a/.github/workflows/terraform.yml b/.github/workflows/terraform.yml index e06686c..7844f90 100644 --- a/.github/workflows/terraform.yml +++ b/.github/workflows/terraform.yml @@ -94,5 +94,5 @@ jobs: # On push to "main", build or change infrastructure according to Terraform configuration files # Note: It is recommended to set up a required "strict" status check in your repository for "Terraform Cloud". See the documentation on "strict" required status checks for more information: https://help.github.com/en/github/administering-a-repository/types-of-required-status-checks - name: Terraform Apply - if: github.ref == 'refs/heads/"main"' && github.event_name == 'push' + if: github.ref == 'refs/heads/main' && github.event_name == 'push' run: terraform apply -auto-approve -input=false diff --git a/ec2.tf b/ec2.tf index 6002bed..402df48 100644 --- a/ec2.tf +++ b/ec2.tf @@ -7,10 +7,10 @@ resource "aws_instance" "minecraft_server" { instance_type = "t2.medium" # RAM: 4 | vCPU: 2 key_name = "test" associate_public_ip_address = true - user_data_replace_on_change = true vpc_security_group_ids = [aws_security_group.minecraft_server.id] - user_data = <<-EOF + user_data_replace_on_change = true + user_data = <<-EOF #!/bin/bash set -e sudo apt update @@ -21,4 +21,8 @@ resource "aws_instance" "minecraft_server" { echo "eula=true" > eula.txt java -Xms2G -Xmx4G -jar server.jar nogui EOF + + tags = { + Name = "minecraft_server" + } } diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..55c5feb --- /dev/null +++ b/install.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# For logging +set -e + +# Download java 17 +sudo apt update +sudo apt install -y openjdk-17-jre + +# Download Minecraft Server +mkdir minecraft_server +cd minecraft_server +wget https://api.papermc.io/v2/projects/paper/versions/1.20.4/builds/435/downloads/paper-1.20.4-435.jar -O server.jar +echo "eula=true" > eula.txt + +# Run minecraft server +java -Xms2G -Xmx4G -jar server.jar nogui \ No newline at end of file diff --git a/locals.tf b/locals.tf index a8ad5c4..9838758 100644 --- a/locals.tf +++ b/locals.tf @@ -1,4 +1,5 @@ locals { # Allowed CIDR for minecraft_server - allowed_ips = ["186.155.12.50/32"] + allowed_ips = ["186.155.12.50/32"] + ssh_source_ip = "186.155.12.50/32" } diff --git a/monitoring/logging.sh b/monitoring/logging.sh new file mode 100755 index 0000000..d6b2e32 --- /dev/null +++ b/monitoring/logging.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +ssh -i '/Users/Oscar_Lopez/Downloads/test.pem' ubuntu@3.87.206.83 tail -f /minecraft_server/logs/latest.log \ No newline at end of file diff --git a/monitoring/top.sh b/monitoring/top.sh new file mode 100755 index 0000000..85bef73 --- /dev/null +++ b/monitoring/top.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +pid=$(ssh -i '/Users/Oscar_Lopez/Downloads/test.pem' ubuntu@3.87.206.83 pidof java) +ssh -i '/Users/Oscar_Lopez/Downloads/test.pem' ubuntu@3.87.206.83 ps -p ${pid} -o %cpu,%mem,cmd \ No newline at end of file diff --git a/outputs.tf b/outputs.tf new file mode 100644 index 0000000..3911841 --- /dev/null +++ b/outputs.tf @@ -0,0 +1,5 @@ +output "pub_ip" { + value = aws_instance.minecraft_server.public_ip + description = "Instance Public IP" + depends_on = [aws_instance.minecraft_server] +} diff --git a/sg.tf b/sg.tf index e7fd7ca..6dad618 100644 --- a/sg.tf +++ b/sg.tf @@ -10,7 +10,7 @@ resource "aws_security_group" "minecraft_server" { resource "aws_vpc_security_group_ingress_rule" "minecraft_server_ssh" { security_group_id = aws_security_group.minecraft_server.id - cidr_ipv4 = "186.155.12.50/32" + cidr_ipv4 = local.ssh_source_ip from_port = 22 ip_protocol = "tcp" to_port = 22 @@ -23,4 +23,10 @@ resource "aws_vpc_security_group_ingress_rule" "minecraft_server_port" { from_port = 25565 ip_protocol = "tcp" to_port = 25565 +} + +resource "aws_vpc_security_group_egress_rule" "minecraft_server" { + security_group_id = aws_security_group.minecraft_server.id + cidr_ipv4 = "0.0.0.0/0" + ip_protocol = -1 } \ No newline at end of file