148 lines
2.6 KiB
HCL
148 lines
2.6 KiB
HCL
variable "profile" {
|
|
type = string
|
|
default = "${env("AWS_PROFILE")}"
|
|
}
|
|
|
|
variable "ami_regions" {
|
|
type = list(string)
|
|
default = ["ap-southeast-2"]
|
|
}
|
|
|
|
variable "environment" {
|
|
type = string
|
|
default = "prod"
|
|
}
|
|
|
|
variable "region" {
|
|
type = string
|
|
}
|
|
|
|
variable "ami_name" {
|
|
type = string
|
|
default = "supabase-postgres"
|
|
}
|
|
|
|
variable "postgres-version" {
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
variable "git-head-version" {
|
|
type = string
|
|
default = "unknown"
|
|
}
|
|
|
|
variable "packer-execution-id" {
|
|
type = string
|
|
default = "unknown"
|
|
}
|
|
|
|
variable "force-deregister" {
|
|
type = bool
|
|
default = false
|
|
}
|
|
variable "git_sha" {
|
|
type = string
|
|
default = env("GIT_SHA")
|
|
}
|
|
|
|
variable "postgres_major_version" {
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
packer {
|
|
required_plugins {
|
|
amazon = {
|
|
version = ">= 0.0.2"
|
|
source = "github.com/hashicorp/amazon"
|
|
}
|
|
}
|
|
}
|
|
|
|
source "amazon-ebs" "ubuntu" {
|
|
ami_name = "${var.ami_name}-${var.postgres-version}"
|
|
instance_type = "c6g.4xlarge"
|
|
region = "${var.region}"
|
|
source_ami_filter {
|
|
filters = {
|
|
name = "${var.ami_name}-${var.postgres-version}-stage-1"
|
|
root-device-type = "ebs"
|
|
virtualization-type = "hvm"
|
|
}
|
|
most_recent = true
|
|
owners = ["amazon", "self"]
|
|
}
|
|
|
|
communicator = "ssh"
|
|
ssh_pty = true
|
|
ssh_username = "ubuntu"
|
|
ssh_timeout = "5m"
|
|
|
|
associate_public_ip_address = true
|
|
|
|
|
|
ena_support = true
|
|
|
|
run_tags = {
|
|
creator = "packer"
|
|
appType = "postgres"
|
|
packerExecutionId = "${var.packer-execution-id}"
|
|
}
|
|
run_volume_tags = {
|
|
creator = "packer"
|
|
appType = "postgres"
|
|
}
|
|
snapshot_tags = {
|
|
creator = "packer"
|
|
appType = "postgres"
|
|
}
|
|
tags = {
|
|
creator = "packer"
|
|
appType = "postgres"
|
|
postgresVersion = "${var.postgres-version}"
|
|
sourceSha = "${var.git-head-version}"
|
|
}
|
|
}
|
|
|
|
build {
|
|
name = "nix-packer-ubuntu"
|
|
sources = [
|
|
"source.amazon-ebs.ubuntu"
|
|
]
|
|
|
|
# Copy ansible playbook
|
|
provisioner "shell" {
|
|
inline = ["mkdir /tmp/ansible-playbook"]
|
|
}
|
|
|
|
provisioner "file" {
|
|
source = "ansible"
|
|
destination = "/tmp/ansible-playbook"
|
|
}
|
|
|
|
provisioner "file" {
|
|
source = "migrations"
|
|
destination = "/tmp"
|
|
}
|
|
|
|
provisioner "file" {
|
|
source = "ebssurrogate/files/unit-tests"
|
|
destination = "/tmp/unit-tests"
|
|
}
|
|
|
|
provisioner "file" {
|
|
source = "scripts"
|
|
destination = "/tmp/ansible-playbook"
|
|
}
|
|
|
|
provisioner "shell" {
|
|
environment_vars = [
|
|
"GIT_SHA=${var.git_sha}",
|
|
"POSTGRES_MAJOR_VERSION=${var.postgres_major_version}"
|
|
]
|
|
script = "scripts/nix-provision.sh"
|
|
}
|
|
|
|
}
|