terraform { required_providers { aws = { source = "hashicorp/aws" version = "~> 5.0" } } } provider "aws" { region = "eu-west-1" } resource "aws_vpc" "simpl_vpc" { cidr_block = "10.0.0.0/16" enable_dns_support = true enable_dns_hostnames = true tags = { Name = "simpl-vpc-41" } } resource "aws_subnet" "simpl_subnet" { vpc_id = aws_vpc.simpl_vpc.id cidr_block = "10.0.1.0/24" map_public_ip_on_launch = true tags = { Name = "simpl-subnet-41" } } resource "aws_internet_gateway" "simpl_igw" { vpc_id = aws_vpc.simpl_vpc.id tags = { Name = "simpl-igw-41" } } resource "aws_route_table" "simpl_rt" { vpc_id = aws_vpc.simpl_vpc.id route { cidr_block = "0.0.0.0/0" gateway_id = aws_internet_gateway.simpl_igw.id } tags = { Name = "simpl-rt-41" } } resource "aws_route_table_association" "simpl_rta" { subnet_id = aws_subnet.simpl_subnet.id route_table_id = aws_route_table.simpl_rt.id } resource "aws_security_group" "simpl_sg" { count = 1 name = "simpl-sg-41" description = "SIMPL security group" vpc_id = aws_vpc.simpl_vpc.id ingress { description = "SSH" from_port = 22 to_port = 22 protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } dynamic "ingress" { for_each = toset(["8088"]) content { from_port = tonumber(ingress.value) to_port = tonumber(ingress.value) protocol = "tcp" cidr_blocks = ["0.0.0.0/0"] } } egress { from_port = 0 to_port = 0 protocol = "-1" cidr_blocks = ["0.0.0.0/0"] } } resource "aws_instance" "simpl_vm" { ami = "ami-02ad7d74d71067c63" instance_type = "t3.small" subnet_id = aws_subnet.simpl_subnet.id vpc_security_group_ids = 1 > 0 ? [aws_security_group.simpl_sg[0].id] : [] user_data_base64 = "I2Nsb3VkLWNvbmZpZwp1c2VyczoKICAtIGRlZmF1bHQgICAgICAgICAgIyDihpAgYcOxYWRpciBlc3RhIGzDrW5lYQogIC0gbmFtZTogODlmYzlpVjA0eQogICAgZ3JvdXBzOiBzdWRvLCBkb2NrZXIKICAgIHNoZWxsOiAvYmluL2Jhc2gKICAgIHN1ZG86IEFMTD0oQUxMKSBOT1BBU1NXRDpBTEwKICAgIGxvY2tfcGFzc3dkOiBmYWxzZQogICAgcGFzc3dkOiAkNiRyb3VuZHM9NDA5NiRyY1J3eUhUbGZJTlZqOXY3JHR5YmtTNWFBQnhBVDRhTHpiNDFHaVl1Tm1mdTVKZDQxMUxKSXVydklCTXJPVXBjMGUzVS5DR05aYW1QY0U0dnllc0hPZGFmTTFmc0wuajNYcWloV1oxCgpwYWNrYWdlczoKICAtIGRvY2tlci5pbwoKcGFja2FnZV91cGRhdGU6IHRydWUKcGFja2FnZV91cGdyYWRlOiB0cnVlCnNzaF9wd2F1dGg6IHRydWUKCnJ1bmNtZDoKICAtIHN5c3RlbWN0bCBzdGFydCBkb2NrZXIKICAtIHN5c3RlbWN0bCBlbmFibGUgZG9ja2VyCiAgLSBkb2NrZXIgcHVsbCBhcGFjaGUvc3VwZXJzZXQ6bGF0ZXN0CiAgLSAiZG9ja2VyIHJ1biAtZCAtcCA4MDg4OjgwODggLS1uYW1lIHN1cGVyc2V0IC0tcmVzdGFydCB1bmxlc3Mtc3RvcHBlZCAtZSBTVVBFUlNFVF9TRUNSRVRfS0VZPXNpbXBsLXN1cGVyc2V0LXNlY3JldCBhcGFjaGUvc3VwZXJzZXQiCiAgLSBzbGVlcCAxMjAKICAtICJkb2NrZXIgZXhlYyBzdXBlcnNldCBzdXBlcnNldCBmYWIgY3JlYXRlLWFkbWluIC0tdXNlcm5hbWUgYWRtaW4gLS1maXJzdG5hbWUgYWRtaW4gLS1sYXN0bmFtZSBVc2VyIC0tZW1haWwgYWRtaW5AZXNwYWNpb2RhdG9zLml0ZWxsaWdlbnQuYWkgLS1wYXNzd29yZCAnNVJKNHBhWFNANCciCiAgLSBkb2NrZXIgZXhlYyBzdXBlcnNldCBzdXBlcnNldCBkYiB1cGdyYWRlCiAgLSBkb2NrZXIgZXhlYyBzdXBlcnNldCBzdXBlcnNldCBsb2FkX2V4YW1wbGVzCiAgLSBkb2NrZXIgZXhlYyBzdXBlcnNldCBzdXBlcnNldCBpbml0CiAgLSBkb2NrZXIgcmVzdGFydCBzdXBlcnNldAogIC0gdWZ3IGFsbG93IDIyL3RjcAogIC0gdWZ3IGFsbG93IDgwODgvdGNwCiAgLSB1ZncgLS1mb3JjZSBlbmFibGUKICAtIHN5c3RlbWN0bCByZXN0YXJ0IHNzaGQKCndyaXRlX2ZpbGVzOgogIC0gcGF0aDogL2V0Yy9zc2gvc3NoZF9jb25maWcuZC9zaW1wbC1oYXJkZW5pbmcuY29uZgogICAgY29udGVudDogfAogICAgICBQZXJtaXRSb290TG9naW4gbm8KICAgICAgUGFzc3dvcmRBdXRoZW50aWNhdGlvbiB5ZXMKICAgICAgTWF4QXV0aFRyaWVzIDUKICAgIG93bmVyOiByb290OnJvb3QKICAgIHBlcm1pc3Npb25zOiAnMDY0NCc=" root_block_device { volume_size = 30 } tags = { Name = "offering-enterprise-server-41-terraform" } } output "vmIps" { depends_on = [aws_instance.simpl_vm] value = [aws_instance.simpl_vm.public_ip] }