Skip to content

Latest commit

 

History

History

README.md

Complete Example - PostgreSQL HA Cluster

This example deploys a complete PostgreSQL HA cluster on OCI including:

  • A dedicated compartment
  • KMS vault and encryption key
  • The PostgreSQL HA cluster module (2 PostgreSQL nodes + 1 etcd witness)
  • Network Load Balancer for client connections

Prerequisites

  • OCI tenancy with appropriate permissions
  • An existing VCN and private subnet
  • SSH key pair for instance access
  • Terraform >= 1.5
  • OCI CLI configured (or API key credentials)

Usage

  1. Copy the example tfvars file and fill in your values:
cp terraform.tfvars.example terraform.tfvars
# Edit terraform.tfvars with your OCI credentials and resource OCIDs
  1. Initialize and deploy:
terraform init
terraform plan
terraform apply
  1. After deployment (allow 5-10 minutes for user-data scripts):
# Check cluster status via SSH to any PostgreSQL node
ssh opc@<node1_ip>
sudo -u postgres patronictl -c /etc/patroni.yml list

Inputs

Name Description Type Default
region OCI region string -
tenancy_ocid OCI Tenancy OCID string -
user_ocid OCI User OCID string -
fingerprint Base64-encoded API key fingerprint string -
oci_prv_key Base64-encoded OCI API private key string -
compartment_id OCI Compartment OCID string -
vcn_id VCN OCID string -
subnet_id Private subnet OCID string -
subnet_cidr Subnet CIDR block string 10.0.2.0/24
prefix Resource name prefix string demo
environment Environment name string dev
cluster_name Patroni cluster name string POSTGRES-HA
family_shape OCI compute shape string VM.Standard.E4.Flex
postgres_instance_specs Instance CPU/memory object {ocpus=4, memory=32}
ssh_authorized_keys_postgres Base64-encoded SSH public keys list(string) -

Outputs

Name Description
load_balancer_ip NLB IP addresses
postgres_instance_ids PostgreSQL instance OCIDs
postgres_private_ips PostgreSQL instance private IPs
witness_instance_id etcd witness instance OCID
witness_private_ip etcd witness private IP
nsg_id Network Security Group OCID