diff options
author | Paul Okstad <pokstad@gitlab.com> | 2020-07-30 19:26:00 +0300 |
---|---|---|
committer | Paul Okstad <pokstad@gitlab.com> | 2020-07-30 19:26:00 +0300 |
commit | 40b90823b0d55561059d27249e02db426b428786 (patch) | |
tree | 9cfa3e4d7c8aac04ccde086983e5187de0c89136 | |
parent | 3876ecd3e4f6bf756621ad07de5e033f8a5b6129 (diff) | |
parent | 0024c38881587936937d8c59657ccd634178d38e (diff) |
Merge branch 'ps-pgbouncer-terraform' into 'master'
PgBouncer deployment with terraform
Closes #2975
See merge request gitlab-org/gitaly!2418
-rwxr-xr-x | _support/terraform/create-demo-cluster | 2 | ||||
-rw-r--r-- | _support/terraform/main.tf | 41 |
2 files changed, 32 insertions, 11 deletions
diff --git a/_support/terraform/create-demo-cluster b/_support/terraform/create-demo-cluster index 3f4ea6883..da352cb72 100755 --- a/_support/terraform/create-demo-cluster +++ b/_support/terraform/create-demo-cluster @@ -14,6 +14,8 @@ def main run!(%w[gcloud auth application-default login]) end + run!(%w[terraform get]) + unless terraform_initialized? run!(%w[terraform init]) end diff --git a/_support/terraform/main.tf b/_support/terraform/main.tf index b90d97b39..5482359fb 100644 --- a/_support/terraform/main.tf +++ b/_support/terraform/main.tf @@ -1,3 +1,4 @@ +variable "project" { default = "gitlab-internal-153318" } variable "demo_region" { default = "us-east4" } variable "demo_zone" { default = "us-east4-c" } variable "praefect_demo_cluster_name" { } @@ -23,7 +24,7 @@ variable "praefect_sql_password" { } provider "google" { version = "~> 3.12" - project = "gitlab-internal-153318" + project = var.project region = var.demo_region zone = var.demo_zone } @@ -32,6 +33,10 @@ resource "random_id" "db_name_suffix" { byte_length = 4 } +resource "google_compute_address" "pgbouncer" { + name = "${var.praefect_demo_cluster_name}-praefect-pgbouncer" +} + resource "google_sql_database_instance" "praefect_sql" { # It appears CloudSQL does not like Terraform re-using database names. # Adding a random ID prevents name reuse. @@ -45,21 +50,16 @@ resource "google_sql_database_instance" "praefect_sql" { ip_configuration{ ipv4_enabled = true - dynamic "authorized_networks" { - for_each = google_compute_instance.praefect - iterator = praefect - - content { - name = "praefect-${praefect.key}" - value = praefect.value.network_interface[0].access_config[0].nat_ip - } + authorized_networks { + name = "allow-all-inbound" + value = google_compute_address.pgbouncer.address } } } } -output "praefect_postgresql_ip" { - value = google_sql_database_instance.praefect_sql.public_ip_address +output "praefect_pgbouncer_ip" { + value = module.pgbouncer.private_ip_address } resource "google_sql_user" "users" { @@ -73,6 +73,25 @@ resource "google_sql_database" "praefect-database" { instance = google_sql_database_instance.praefect_sql.name } +module "pgbouncer" { + source = "christippett/cloud-sql-pgbouncer/google" + version = "~>1.1" + + project = var.project + name = "${var.praefect_demo_cluster_name}-pgbouncer" + zone = var.demo_zone + subnetwork = "default" + public_ip_address = google_compute_address.pgbouncer.address + + port = 5432 + database_host = google_sql_database_instance.praefect_sql.public_ip_address + + users = [ + { name = google_sql_user.users.name, password = google_sql_user.users.password, admin = true }, + ] + auth_query = "SELECT usename, passwd FROM pg_shadow WHERE usename=$1" +} + resource "google_compute_instance" "gitlab" { name = format("%s-gitlab", var.praefect_demo_cluster_name) machine_type = "n1-standard-2" |