Skip to content

Commit 112c5b5

Browse files
authored
Merge pull request microsoft#77 from neil-yechenwei/examplepostgresqlfsdb
Add example for PostgreSQL Flexible Server Database
2 parents be9fb6f + ece3885 commit 112c5b5

File tree

7 files changed

+157
-0
lines changed

7 files changed

+157
-0
lines changed
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
resource "random_pet" "rg-name" {
2+
prefix = var.name_prefix
3+
}
4+
5+
resource "azurerm_resource_group" "default" {
6+
name = random_pet.rg-name.id
7+
location = var.location
8+
}
9+
10+
resource "azurerm_virtual_network" "default" {
11+
name = "${var.name_prefix}-vnet"
12+
location = azurerm_resource_group.default.location
13+
resource_group_name = azurerm_resource_group.default.name
14+
address_space = ["10.0.0.0/16"]
15+
}
16+
17+
resource "azurerm_network_security_group" "default" {
18+
name = "${var.name_prefix}-nsg"
19+
location = azurerm_resource_group.default.location
20+
resource_group_name = azurerm_resource_group.default.name
21+
22+
security_rule {
23+
name = "test123"
24+
priority = 100
25+
direction = "Inbound"
26+
access = "Allow"
27+
protocol = "Tcp"
28+
source_port_range = "*"
29+
destination_port_range = "*"
30+
source_address_prefix = "*"
31+
destination_address_prefix = "*"
32+
}
33+
}
34+
35+
resource "azurerm_subnet" "default" {
36+
name = "${var.name_prefix}-subnet"
37+
virtual_network_name = azurerm_virtual_network.default.name
38+
resource_group_name = azurerm_resource_group.default.name
39+
address_prefixes = ["10.0.2.0/24"]
40+
service_endpoints = ["Microsoft.Storage"]
41+
42+
delegation {
43+
name = "fs"
44+
45+
service_delegation {
46+
name = "Microsoft.DBforPostgreSQL/flexibleServers"
47+
48+
actions = [
49+
"Microsoft.Network/virtualNetworks/subnets/join/action",
50+
]
51+
}
52+
}
53+
}
54+
55+
resource "azurerm_subnet_network_security_group_association" "default" {
56+
subnet_id = azurerm_subnet.default.id
57+
network_security_group_id = azurerm_network_security_group.default.id
58+
}
59+
60+
resource "azurerm_private_dns_zone" "default" {
61+
name = "${var.name_prefix}-pdz.postgres.database.azure.com"
62+
resource_group_name = azurerm_resource_group.default.name
63+
64+
depends_on = [azurerm_subnet_network_security_group_association.default]
65+
}
66+
67+
resource "azurerm_private_dns_zone_virtual_network_link" "default" {
68+
name = "${var.name_prefix}-pdzvnetlink.com"
69+
private_dns_zone_name = azurerm_private_dns_zone.default.name
70+
virtual_network_id = azurerm_virtual_network.default.id
71+
resource_group_name = azurerm_resource_group.default.name
72+
}
73+
74+
resource "azurerm_postgresql_flexible_server" "default" {
75+
name = "${var.name_prefix}-server"
76+
resource_group_name = azurerm_resource_group.default.name
77+
location = azurerm_resource_group.default.location
78+
version = "13"
79+
delegated_subnet_id = azurerm_subnet.default.id
80+
private_dns_zone_id = azurerm_private_dns_zone.default.id
81+
administrator_login = "adminTerraform"
82+
administrator_password = "QAZwsx123"
83+
zone = "1"
84+
storage_mb = 32768
85+
sku_name = "GP_Standard_D2s_v3"
86+
backup_retention_days = 7
87+
88+
depends_on = [azurerm_private_dns_zone_virtual_network_link.default]
89+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
output "resource_group_name" {
2+
value = azurerm_resource_group.default.name
3+
}
4+
5+
output "azurerm_postgresql_flexible_server" {
6+
value = azurerm_postgresql_flexible_server.default.name
7+
}
8+
9+
output "postgresql_flexible_server_database_name" {
10+
value = azurerm_postgresql_flexible_server_database.default.name
11+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
resource "azurerm_postgresql_flexible_server_database" "default" {
2+
name = "${var.name_prefix}-db"
3+
server_id = azurerm_postgresql_flexible_server.default.id
4+
collation = "en_US.UTF8"
5+
charset = "UTF8"
6+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
terraform {
2+
required_version = ">=1.0"
3+
4+
required_providers {
5+
azurerm = {
6+
source = "hashicorp/azurerm"
7+
version = "~>2.0"
8+
}
9+
}
10+
}
11+
12+
provider "azurerm" {
13+
features {}
14+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Azure PostgreSQL Flexible Server Database
2+
3+
This template deploys an [Azure PostgreSQL Flexible Server Database](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server_database).
4+
5+
## Terraform resource types
6+
7+
- [random_pet](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/pet)
8+
- [azurerm_resource_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/resource_group)
9+
- [azurerm_virtual_network](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/virtual_network)
10+
- [azurerm_network_security_group](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/network_security_group)
11+
- [azurerm_subnet](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/subnet)
12+
- [azurerm_subnet_network_security_group_association](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/subnet_network_security_group_association)
13+
- [azurerm_private_dns_zone](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_dns_zone)
14+
- [azurerm_private_dns_zone_virtual_network_link](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/private_dns_zone_virtual_network_link)
15+
- [azurerm_postgresql_flexible_server](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server)
16+
- [azurerm_postgresql_flexible_server_database](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/postgresql_flexible_server_database)
17+
18+
## Variables
19+
20+
| Name | Description |
21+
|-|-|
22+
| `name_prefix` | (Optional) Prefix of the resource name. Value defaults to: postgresqlfs|
23+
| `location` | (Optional) Azure Region in which to deploy these resources. Value defaults to: eastus |
24+
25+
## Example
26+
27+
To see how to run this example, see [Create an Azure PostgreSQL Flexible Server Database using Terraform](https://docs.microsoft.com/azure/developer/terraform/deploy-postgresql-flexible-server-database).
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
variable "name_prefix" {
2+
default = "postgresqlfs"
3+
description = "Prefix of the resource name."
4+
}
5+
6+
variable "location" {
7+
default = "eastus"
8+
description = "Location of the resource."
9+
}

quickstart/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope
3131
- [Azure Kubernetes Service with ACR](./201-aks-acr-identity/)
3232
- [Azure virtual machine scale set with jumpbox](./201-vmss-jumpbox)
3333
- [Azure virtual machine scale set with jumpbox from Packer custom image](./201-vmss-packer-jumpbox)
34+
- [Azure PostgreSQL Flexible Server Database](./201-postgresql-fs-db)
3435

3536
#### Advanced
3637
- [Azure Service Fabric](./301-service-fabric/)

0 commit comments

Comments
 (0)