infra: add ec2, eip, key pair and docker bootstrap
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user