w3resource

Using Terraform to Automate PostgreSQL Database Management


Terraform PostgreSQL Provider: Automating PostgreSQL Management

The Terraform PostgreSQL provider is used to automate the setup, management, and configuration of PostgreSQL resources, such as databases, users, and schemas, within your infrastructure as code (IaC) framework. This provider allows developers and database administrators to efficiently manage PostgreSQL instances, users, and permissions through Terraform configurations, which can be version-controlled and reused across environments.

Syntax and Configuration of Terraform PostgreSQL Provider:

To use the PostgreSQL provider in Terraform, you’ll need to configure it in your .tf files and specify connection details such as host, port, and credentials.

Step 1: Provider Configuration

Below is the basic setup required to configure the PostgreSQL provider.

# Define PostgreSQL provider with connection settings
provider "postgresql" {
  host     = "your-db-host"         # Database host address
  port     = 5432                   # Default PostgreSQL port
  username = "your-username"        # Database user
  password = "your-password"        # User password
  sslmode  = "require"              # SSL mode
  database = "your-database-name"   # Default database name
}

Explanation:

  • host: The IP or DNS of the PostgreSQL server.
  • port: The port PostgreSQL is running on (default is 5432).
  • username & password: Credentials for authentication.
  • sslmode: The SSL connection mode, e.g., require for secure connections.
  • database: The default database name for the connection.

Step 2: Creating a PostgreSQL Database with Terraform

The following example demonstrates creating a database named my_database using Terraform.

# Resource to create a new PostgreSQL database
resource "postgresql_database" "my_database" {
  name = "my_database"  # Name of the new database
}

Step 3: Managing PostgreSQL Users

Define users with specific permissions in PostgreSQL using the following resource:

# Create a new PostgreSQL user
resource "postgresql_role" "my_user" {
  name     = "my_user"           # Username for PostgreSQL
  password = "user_password"     # User password
  login    = true                # Allow user login
}

Explanation of Code:

  • provider "postgresql": Configures the PostgreSQL provider with the server's connection details.
  • postgresql_database: Creates a new database in PostgreSQL with the specified name.
  • postgresql_role: Adds a user with login privileges, helping manage users for the database.

Additional Information

Using Terraform with PostgreSQL provides significant benefits:

  • Repeatable Infrastructure: Ensures consistent database environments across development, staging, and production.
  • Automated Management: Simplifies database provisioning and maintenance.
  • Version Control: Tracks changes to database configuration over time, allowing easy rollback if necessary.

Summary:

The Terraform PostgreSQL provider is an effective tool for database administrators and DevOps engineers looking to incorporate PostgreSQL into an IaC workflow. It provides flexibility in creating and managing PostgreSQL resources and is suitable for various database management needs, from setting up databases to defining user roles and permissions.

All PostgreSQL Questions, Answers, and Code Snippets Collection.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://www.w3resource.com/PostgreSQL/snippets/terraform-postgresql-provider.php