ops: DO, new vercel provider
This commit is contained in:
parent
5f19ff1c98
commit
bf08d04862
70
tf/main.tf
70
tf/main.tf
|
@ -1,8 +1,13 @@
|
||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
|
# official vercel/vercel provider seems less stable
|
||||||
vercel = {
|
vercel = {
|
||||||
source = "vercel/vercel"
|
source = "registry.terraform.io/chronark/vercel"
|
||||||
version = "~> 0.1"
|
version = ">=0.10.3"
|
||||||
|
}
|
||||||
|
digitalocean = {
|
||||||
|
source = "digitalocean/digitalocean"
|
||||||
|
version = "~> 2.0"
|
||||||
}
|
}
|
||||||
local = {
|
local = {
|
||||||
source = "hashicorp/local"
|
source = "hashicorp/local"
|
||||||
|
@ -12,37 +17,58 @@ terraform {
|
||||||
}
|
}
|
||||||
|
|
||||||
provider "vercel" {
|
provider "vercel" {
|
||||||
api_token = var.vercel_api_token
|
token = var.vercel_api_token
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "digitalocean" {
|
||||||
|
token = var.digital_ocean_token
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "digitalocean_database_cluster" "metaforecast_db" {
|
||||||
|
name = "postgres-green"
|
||||||
|
engine = "pg"
|
||||||
|
size = "db-s-1vcpu-1gb"
|
||||||
|
region = "nyc1"
|
||||||
|
node_count = 1
|
||||||
|
version = 14
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "vercel_project" "metaforecast" {
|
resource "vercel_project" "metaforecast" {
|
||||||
name = "metaforecast"
|
name = "metaforecast"
|
||||||
team_id = "quantified-uncertainty"
|
team_id = var.vercel_team
|
||||||
framework = "nextjs"
|
|
||||||
|
|
||||||
environment = [
|
git_repository {
|
||||||
for k, v in var.metaforecast_env : {
|
|
||||||
key = k
|
|
||||||
value = v
|
|
||||||
target = ["production"]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
git_repository = {
|
|
||||||
type = "github"
|
type = "github"
|
||||||
repo = "QURIresearch/metaforecast"
|
repo = "QURIresearch/metaforecast"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
domain {
|
||||||
|
name = "metaforecast.org"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "vercel_project_domain" "metaforecast" {
|
resource "vercel_env" "metaforecast" {
|
||||||
project_id = vercel_project.metaforecast.id
|
project_id = vercel_project.metaforecast.id
|
||||||
domain = "metaforecast.org"
|
team_id = var.vercel_team
|
||||||
team_id = "quantified-uncertainty"
|
type = "plain"
|
||||||
|
for_each = var.metaforecast_env
|
||||||
|
key = each.key
|
||||||
|
value = each.value
|
||||||
|
target = ["preview", "production"]
|
||||||
}
|
}
|
||||||
|
|
||||||
// should probably be replaced with local bash script
|
resource "vercel_env" "metaforecast_db" {
|
||||||
resource "local_file" "foo" {
|
project_id = vercel_project.metaforecast.id
|
||||||
content = join("", concat(["# generated by terraform\n"], [for k, v in var.metaforecast_env : "${k} = \"${v}\"\n"]))
|
team_id = var.vercel_team
|
||||||
filename = "${path.module}/../.env.prod"
|
type = "plain"
|
||||||
file_permission = "0644"
|
key = "DIGITALOCEAN_POSTGRES"
|
||||||
|
value = digitalocean_database_cluster.metaforecast_db.uri
|
||||||
|
target = ["preview", "production"]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# should probably be replaced with local bash script
|
||||||
|
# resource "local_file" "foo" {
|
||||||
|
# content = join("", concat(["# generated by terraform\n"], [for k, v in var.metaforecast_env : "${k} = \"${v}\"\n"]))
|
||||||
|
# filename = "${path.module}/../.env.prod"
|
||||||
|
# file_permission = "0644"
|
||||||
|
# }
|
||||||
|
|
|
@ -1,7 +1,16 @@
|
||||||
variable "metaforecast_env" {
|
|
||||||
type = map(string)
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "vercel_api_token" {
|
variable "vercel_api_token" {
|
||||||
type = string
|
type = string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
variable "digital_ocean_token" {
|
||||||
|
type = string
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "vercel_team" {
|
||||||
|
type = string
|
||||||
|
default = "quantified-uncertainty"
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "metaforecast_env" {
|
||||||
|
type = map(string)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user