88 lines
2.2 KiB
HCL
88 lines
2.2 KiB
HCL
# Configuration - AWS base image
|
|
variable "base_ami" {
|
|
type = string
|
|
default = "ami-0851b76e8b1bce90b"
|
|
}
|
|
|
|
# Configuration - AWS provisioning instance type
|
|
variable "instance_type" {
|
|
type = string
|
|
default = "t2.micro"
|
|
}
|
|
|
|
# Configuration - AWS subnet
|
|
variable "subnet_id" {
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
# Configuration - AWS VPC
|
|
variable "vpc_id" {
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
# Configuration - DO token
|
|
variable "token" {
|
|
type = string
|
|
default = "${env("DIGITALOCEAN_TOKEN")}"
|
|
}
|
|
|
|
|
|
# "timestamp" template function replacement
|
|
locals { timestamp = regex_replace(timestamp(), "[- TZ:]", "") }
|
|
|
|
# Variable - AMI naming
|
|
locals {
|
|
ami_name = "appsmith-ami-${local.timestamp}"
|
|
image_name = "appsmith-marketplace-snapshot-${local.timestamp}"
|
|
}
|
|
|
|
# Builder - Provision AWS instance
|
|
source "amazon-ebs" "autogenerated_1" {
|
|
ami_name = "${local.ami_name}"
|
|
instance_type = "${var.instance_type}"
|
|
launch_block_device_mappings {
|
|
delete_on_termination = true
|
|
device_name = "/dev/sda1"
|
|
volume_size = 15
|
|
volume_type = "gp2"
|
|
}
|
|
region = "ap-south-1"
|
|
source_ami = "${var.base_ami}"
|
|
ssh_username = "appsmith"
|
|
subnet_id = "${var.subnet_id}"
|
|
vpc_id = "${var.vpc_id}"
|
|
skip_create_ami = false
|
|
user_data_file = "./defaults.cfg"
|
|
}
|
|
|
|
# Builder - Provision DO droplet
|
|
source "digitalocean" "autogenerated_2" {
|
|
api_token = "${var.token}"
|
|
image = "ubuntu-20-04-x64"
|
|
region = "blr1"
|
|
size = "s-1vcpu-1gb"
|
|
snapshot_name = "${local.image_name}"
|
|
ssh_username = "appsmith"
|
|
user_data_file = "./defaults.cfg"
|
|
}
|
|
|
|
# Provisioning - Setup Appsmith
|
|
build {
|
|
sources = ["source.amazon-ebs.autogenerated_1", "source.digitalocean.autogenerated_2"]
|
|
|
|
provisioner "ansible" {
|
|
extra_arguments = ["--tags", "packer"]
|
|
user = "appsmith"
|
|
playbook_file = "../ansible/appsmith_playbook/appsmith-playbook.yml"
|
|
}
|
|
|
|
provisioner "ansible" {
|
|
only = ["amazon-ebs.autogenerated_1"]
|
|
user = "appsmith"
|
|
extra_arguments = ["--tags", "packer-aws", "--skip-tags", "always"]
|
|
playbook_file = "../ansible/appsmith_playbook/appsmith-playbook.yml"
|
|
}
|
|
}
|