WAWAA's picture
Upload folder using huggingface_hub
4962437
provider "aws" {
region = "us-west-2"
}
data "aws_ami" "ubuntu" {
most_recent = true
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
owners = ["099720109477"]
}
resource "aws_key_pair" "deployer" {
key_name = "deployer-key"
public_key = file("~/.ssh/id_rsa.pub")
}
resource "aws_security_group" "swarm-sg" {
name = "swarm-sg"
description = "Security group for Swarm app"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["0.0.0.0/0"]
}
ingress {
from_port = 8000
to_port = 8000
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_launch_configuration" "swarm" {
name = "swarm-configuration"
image_id = data.aws_ami.ubuntu.id
instance_type = "g4dn.xlarge"
key_name = aws_key_pair.deployer.key_name
security_groups = [aws_security_group.swarm-sg.id]
user_data = <<-EOF
#!/bin/bash
sudo apt-get update
sudo apt-get install -y docker.io
sudo docker pull your_docker_image_name
sudo docker run -d -p 8000:8000 your_docker_image_name
EOF
root_block_device {
volume_type = "gp2"
volume_size = 30 # size in GBs
}
lifecycle {
create_before_destroy = true
}
}
resource "aws_autoscaling_group" "swarm" {
name_prefix = "swarm-asg"
max_size = 5
min_size = 1
desired_capacity = 1
launch_configuration = aws_launch_configuration.swarm.id
lifecycle {
create_before_destroy = true
}
}
resource "aws_elb" "swarm" {
name = "swarm-elb"
subnets = ["subnet-id1", "subnet-id2"]
listener {
instance_port = 8000
instance_protocol = "http"
lb_port = 80
lb_protocol = "http"
}
health_check {
healthy_threshold = 2
unhealthy_threshold = 2
timeout = 3
target = "HTTP:8000/"
interval = 30
}
instances = [aws_instance.swarm.id]
cross_zone_load_balancing = true
idle_timeout = 400
connection_draining = true
connection_draining_timeout = 400
}