From f104803b6ddc1fdf745906444b83bcafe10e3739 Mon Sep 17 00:00:00 2001 From: Rob Gil Date: Sun, 15 Dec 2019 12:48:40 -0500 Subject: [PATCH 1/2] 169163334 - Adds postgres module and configures dev to run pg Adds the postgres module and configures it in the development environment. --- terraform/modules/postgres/main.tf | 37 ++++++++++++ terraform/modules/postgres/outputs.tf | 0 terraform/modules/postgres/variables.tf | 75 +++++++++++++++++++++++++ terraform/providers/dev/postgres.tf | 8 +++ 4 files changed, 120 insertions(+) create mode 100644 terraform/modules/postgres/main.tf create mode 100644 terraform/modules/postgres/outputs.tf create mode 100644 terraform/modules/postgres/variables.tf create mode 100644 terraform/providers/dev/postgres.tf diff --git a/terraform/modules/postgres/main.tf b/terraform/modules/postgres/main.tf new file mode 100644 index 00000000..9db23be9 --- /dev/null +++ b/terraform/modules/postgres/main.tf @@ -0,0 +1,37 @@ +resource "azurerm_resource_group" "sql" { + name = "${var.name}-${var.environment}-postgres" + location = var.region +} + +resource "azurerm_postgresql_server" "sql" { + name = "${var.name}-${var.environment}-sql" + location = azurerm_resource_group.sql.location + resource_group_name = azurerm_resource_group.sql.name + + sku { + name = var.sku_name + capacity = var.sku_capacity + tier = var.sku_tier + family = var.sku_family + } + + storage_profile { + storage_mb = var.storage_mb + backup_retention_days = var.storage_backup_retention_days + geo_redundant_backup = var.storage_geo_redundant_backup + auto_grow = var.stroage_auto_grow + } + + administrator_login = "sqladmindude" + administrator_login_password = "eI0l7yswwtuhHpwzoVjwRKdAcuGNsg" + version = "11" + ssl_enforcement = "Enabled" +} + +resource "azurerm_postgresql_virtual_network_rule" "sql" { + name = "postgresql-vnet-rule" + resource_group_name = azurerm_resource_group.sql.name + server_name = azurerm_postgresql_server.sql.name + subnet_id = var.subnet_id + ignore_missing_vnet_service_endpoint = true +} \ No newline at end of file diff --git a/terraform/modules/postgres/outputs.tf b/terraform/modules/postgres/outputs.tf new file mode 100644 index 00000000..e69de29b diff --git a/terraform/modules/postgres/variables.tf b/terraform/modules/postgres/variables.tf new file mode 100644 index 00000000..91af61bc --- /dev/null +++ b/terraform/modules/postgres/variables.tf @@ -0,0 +1,75 @@ +variable "region" { + type = string + description = "Region this module and resources will be created in" +} + +variable "name" { + type = string + description = "Unique name for the services in this module" +} + +variable "environment" { + type = string + description = "Environment these resources reside (prod, dev, staging, etc)" +} + +variable "owner" { + type = string + description = "Owner of the environment and resources created in this module" +} + +variable "subnet_id" { + type = string + description = "Subnet the SQL server should run" +} + +variable "sku_name" { + type = string + description = "SKU name" + default = "GP_Gen5_2" +} + +variable "sku_capacity" { + type = string + description = "SKU Capacity" + default = "2" +} + +variable "sku_tier" { + type = string + description = "SKU Tier" + default = "GeneralPurpose" + +} + +variable "sku_family" { + type = string + description = "SKU Family" + default = "Gen5" +} + +variable "storage_mb" { + type = string + description = "Size in MB of the storage used for the sql server" + default = "5000" +} + + +variable "storage_backup_retention_days" { + type = string + description = "Storage backup retention (days)" + default = "7" +} + +variable "storage_geo_redundant_backup" { + type = string + description = "Geographic redundant backup (Enabled/Disabled)" + default = "Disabled" +} + +variable "storage_auto_grow" { + type = string + description = "Auto Grow? (Enabled/Disabled)" + default = "Enabled" +} + diff --git a/terraform/providers/dev/postgres.tf b/terraform/providers/dev/postgres.tf new file mode 100644 index 00000000..89f06e0d --- /dev/null +++ b/terraform/providers/dev/postgres.tf @@ -0,0 +1,8 @@ +module "sql" { + source = "../../modules/postgres" + name = var.name + owner = var.owner + environment = var.environment + region = var.region + subnet_id = module.vpc.subnets # FIXME - Should be a map of subnets and specify private +} From b11dc849f34994333cd2585c6cc8015b8d85bad2 Mon Sep 17 00:00:00 2001 From: Rob Gil Date: Sun, 15 Dec 2019 13:19:32 -0500 Subject: [PATCH 2/2] 169163334 - Adds more variables to postgres TF module --- terraform/modules/postgres/main.tf | 12 +++++------ terraform/modules/postgres/variables.tf | 27 ++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/terraform/modules/postgres/main.tf b/terraform/modules/postgres/main.tf index 9db23be9..860ece56 100644 --- a/terraform/modules/postgres/main.tf +++ b/terraform/modules/postgres/main.tf @@ -19,17 +19,17 @@ resource "azurerm_postgresql_server" "sql" { storage_mb = var.storage_mb backup_retention_days = var.storage_backup_retention_days geo_redundant_backup = var.storage_geo_redundant_backup - auto_grow = var.stroage_auto_grow + auto_grow = var.storage_auto_grow } - administrator_login = "sqladmindude" - administrator_login_password = "eI0l7yswwtuhHpwzoVjwRKdAcuGNsg" - version = "11" - ssl_enforcement = "Enabled" + administrator_login = var.administrator_login + administrator_login_password = var.administrator_login_password + version = var.postgres_version + ssl_enforcement = var.ssl_enforcement } resource "azurerm_postgresql_virtual_network_rule" "sql" { - name = "postgresql-vnet-rule" + name = "${var.name}-${var.environment}-rule" resource_group_name = azurerm_resource_group.sql.name server_name = azurerm_postgresql_server.sql.name subnet_id = var.subnet_id diff --git a/terraform/modules/postgres/variables.tf b/terraform/modules/postgres/variables.tf index 91af61bc..3346ff8f 100644 --- a/terraform/modules/postgres/variables.tf +++ b/terraform/modules/postgres/variables.tf @@ -51,7 +51,7 @@ variable "sku_family" { variable "storage_mb" { type = string description = "Size in MB of the storage used for the sql server" - default = "5000" + default = "5120" } @@ -73,3 +73,28 @@ variable "storage_auto_grow" { default = "Enabled" } +variable "administrator_login" { + type = string + description = "Administrator login" + default = "sqladmindude" # FIXME - Remove with wrapper using KeyVault +} + +variable "administrator_login_password" { + type = string + description = "Administrator password" + default = "eI0l7yswwtuhHpwzoVjwRKdAcuGNsg" # FIXME - Remove with wrapper using KeyVault +} + + +variable "postgres_version" { + type = string + description = "Postgres version to use" + default = "11" +} + +variable "ssl_enforcement" { + type = string + description = "Enforce SSL (Enabled/Disable)" + default = "Enabled" +} +