User Tools

Site Tools


terraformpostgresql

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
terraformpostgresql [2024/11/28 22:28] z0hpvkterraformpostgresql [2025/03/08 22:24] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ===== Terraform with PostgreSQL ===== ===== Terraform with PostgreSQL =====
  
-==== Microsoft Azure ====+==== Microsoft Azure and PostgreSQL Flexible Server ====
  
 === Useful Links === === Useful Links ===
Line 10: Line 10:
 [https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server] [https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server]
  
-=== providers.tf ===+The below commands will initialise Terraform, create an execution plan and apply it.\\ 
 +Afterwards you can clean up the resources created via the terraform destroy command.\\ 
 +<code> 
 +terraform init -upgrade 
 +terraform validate 
 +terraform plan -out main.tfplan 
 +terraform apply main.tfplan 
 + 
 +terraform plan -destroy -out main.destroy.tfplan 
 +terraform apply main.destroy.tfplan 
 +</code> 
 + 
 +=== Terraform Code === 
 +== providers.tf ==
 <file yaml providers.tf> <file yaml providers.tf>
 terraform { terraform {
Line 32: Line 45:
 </file> </file>
  
-=== variables.tf === +== variables.tf == 
-<code yaml>+<file yaml variables.tf>
 variable "resource_group" { variable "resource_group" {
   default     = "DoobDude-WebServer_group"   default     = "DoobDude-WebServer_group"
Line 53: Line 66:
   description = "Location of the resource."   description = "Location of the resource."
 } }
-</code>+</file>
  
-=== main.tf ===+== main.tf ==
 Uses existing resource group, virtual network and network security group Uses existing resource group, virtual network and network security group
  
-<code yaml>+<file yaml main.tf>
 resource "random_password" "pass" { resource "random_password" "pass" {
   length = 20   length = 20
Line 77: Line 90:
   backup_retention_days        = 7   backup_retention_days        = 7
 } }
-</code>+</file>
  
 +== postgresql-fs-db.tf ==
 +<file yaml postgresql-fs-db.tf>
 +locals {
 +  pg_config = {
 +    "log_lock_waits"              : "on",
 +    "log_min_duration_statement"  : "500"
 +    "log_statement"               : "ddl",
 +    "default_statistics_target"   : "250",
 +    "effective_io_concurrency"    : "50"
 +  }
 +}
 +
 +resource "azurerm_postgresql_flexible_server_database" "default" {
 +  name      = "doobtf"
 +  collation = "en_US.utf8"
 +  charset   = "UTF8"
 +  server_id = azurerm_postgresql_flexible_server.default.id
 +}
 +
 +resource "azurerm_postgresql_flexible_server_configuration" "default" {
 +  for_each = local.pg_config
 +  name  = each.key
 +  value = each.value
 +  server_id = azurerm_postgresql_flexible_server.default.id
 +}
 +</file>
 +
 +== outputs.tf ==
 +<file yaml outputs.tf>
 +output "azurerm_postgresql_flexible_server" {
 +  value = azurerm_postgresql_flexible_server.default.name
 +}
 +
 +output "postgresql_flexible_server_database_name" {
 +  value = azurerm_postgresql_flexible_server_database.default.name
 +}
 +
 +output "postgresql_flexible_server_admin_password" {
 +  sensitive = true
 +  value     = azurerm_postgresql_flexible_server.default.administrator_password
 +}
 +</file>
terraformpostgresql.1732832886.txt.gz · Last modified: 2025/03/08 22:23 (external edit)