Files
Cibello-app/infrastructure/terraform/compute.tf
T
2026-08-11 21:32:20 +07:00

78 lines
2.1 KiB
Terraform

data "aws_ami" "ubuntu" {
most_recent = true
owners = ["099720109477"] # Canonical
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
resource "tls_private_key" "app" {
algorithm = "RSA"
rsa_bits = 4096
}
resource "local_file" "app_private_key" {
filename = "${pathexpand("~")}/.ssh/cibello-prod-key"
content = tls_private_key.app.private_key_pem
file_permission = "0600"
}
resource "aws_key_pair" "app" {
key_name = "cibello-prod-key"
public_key = tls_private_key.app.public_key_openssh
}
resource "aws_eip" "app" {
domain = "vpc"
tags = {
Name = "cibello-prod-ip"
}
}
resource "aws_instance" "app" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.small"
subnet_id = aws_subnet.public.id
vpc_security_group_ids = [aws_security_group.web.id]
key_name = aws_key_pair.app.key_name
iam_instance_profile = aws_iam_instance_profile.app.name
root_block_device {
volume_size = 30
volume_type = "gp3"
encrypted = true
delete_on_termination = true
}
user_data = <<-EOF
#!/bin/bash
set -e
apt-get update
apt-get install -y ca-certificates curl gnupg git
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
usermod -aG docker ubuntu
systemctl enable docker --now
EOF
tags = {
Name = "cibello-prod-app"
}
}
resource "aws_eip_association" "app" {
instance_id = aws_instance.app.id
allocation_id = aws_eip.app.id
}