Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Okstad <pokstad@gitlab.com>2020-07-30 19:26:00 +0300
committerPaul Okstad <pokstad@gitlab.com>2020-07-30 19:26:00 +0300
commit40b90823b0d55561059d27249e02db426b428786 (patch)
tree9cfa3e4d7c8aac04ccde086983e5187de0c89136
parent3876ecd3e4f6bf756621ad07de5e033f8a5b6129 (diff)
parent0024c38881587936937d8c59657ccd634178d38e (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-cluster2
-rw-r--r--_support/terraform/main.tf41
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"