epicyon/deploy/aws-lightsail/main.tf

61 lines
1.6 KiB
Terraform
Raw Normal View History

resource "aws_lightsail_static_ip" "epicyon_static_ip" {
name = "epicyon"
}
resource "aws_lightsail_static_ip_attachment" "for_epicyon" {
static_ip_name = aws_lightsail_static_ip.epicyon_static_ip.id
instance_name = aws_lightsail_instance.epicyon.id
}
resource "aws_lightsail_key_pair" "ssh_key_pair" {
name = "epicyon_key"
public_key = var.publickey
}
resource "aws_lightsail_instance" "epicyon" {
name = var.instance_name
availability_zone = "us-east-1a"
blueprint_id = "ubuntu_20_04"
bundle_id = "nano_2_0"
key_pair_name = var.key
}
resource "aws_lightsail_domain" "epicyon_domain" {
domain_name = var.domain
}
resource "aws_lightsail_domain_entry" "epicyon" {
depends_on = [aws_lightsail_static_ip.epicyon_static_ip]
domain_name = aws_lightsail_domain.epicyon_domain.domain_name
name = var.epicyon_sub_domain
type = "A"
target = aws_lightsail_static_ip.epicyon_static_ip.ip_address
}
resource "null_resource" "null_resource_epicyon" {
depends_on = [aws_lightsail_domain_entry.epicyon]
triggers = {
id = timestamp()
}
connection {
agent = false
type = "ssh"
host = aws_lightsail_static_ip.epicyon_static_ip.ip_address
private_key = file(var.private_key)
user = aws_lightsail_instance.epicyon.username
}
provisioner "file" {
source = "./templates/startup.sh"
destination = "~/startup.sh"
}
provisioner "remote-exec" {
inline = [
"chmod +x ~/startup.sh",
"export domain=${var.epicyon_sub_domain}",
"export email=${var.email}",
"bash ~/startup.sh"
]
}
}