mirror of https://gitlab.com/bashrc2/epicyon
				
				
				
			
		
			
	
	
		
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Terraform
		
	
	
		
		
			
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Terraform
		
	
	
| 
								 | 
							
								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"
							 | 
						||
| 
								 | 
							
								    ]
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |