Skip to content

Commit 11cf173

Browse files
committed
chore: generate random password for postgres
1 parent 6579753 commit 11cf173

7 files changed

Lines changed: 34 additions & 32 deletions

File tree

infra/main.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ module "postgres" {
3636
tags = local.tags
3737
rg_name = azurerm_resource_group.rg.name
3838
admin_username = var.admin_username
39-
admin_password = var.admin_password
4039
postgres_subnet_id = module.vnet.postgres_subnet_id
4140
postgres_dns_zone_id = module.vnet.postgres_dns_zone_id
4241

infra/modules/postgres/postgres.tf

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
# ------------------------------------------------------------------------------------------------------
2+
# Generate random password for PostgreSQL admin
3+
# ------------------------------------------------------------------------------------------------------
4+
resource "random_password" "postgres_admin" {
5+
length = 24
6+
special = true
7+
# Azure PostgreSQL password requirements
8+
min_lower = 1
9+
min_upper = 1
10+
min_numeric = 1
11+
min_special = 1
12+
# Avoid characters that might cause issues in connection strings
13+
override_special = "!#$%&*()-_=+[]{}:?"
14+
}
15+
116
# ------------------------------------------------------------------------------------------------------
217
# DEPLOY POSTGRESQL FLEXIBLE SERVER WITH PRIVATE NETWORKING
318
# ------------------------------------------------------------------------------------------------------
@@ -7,7 +22,7 @@ resource "azurerm_postgresql_flexible_server" "pg" {
722
location = var.location
823
version = var.postgres_version
924
administrator_login = var.admin_username
10-
administrator_password = var.admin_password
25+
administrator_password = random_password.postgres_admin.result
1126
sku_name = var.sku_name
1227
storage_mb = 32768
1328

infra/modules/postgres/postgres_output.tf

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ output "username" {
99

1010
output "connection_string" {
1111
description = "PostgreSQL connection string"
12-
value = "postgresql://${var.admin_username}:${var.admin_password}@${azurerm_postgresql_flexible_server.pg.fqdn}:5432/postgres?sslmode=require"
12+
value = "postgresql://${var.admin_username}:${random_password.postgres_admin.result}@${azurerm_postgresql_flexible_server.pg.fqdn}:5432/postgres?sslmode=require"
13+
sensitive = true
14+
}
15+
16+
output "admin_password" {
17+
description = "Auto-generated PostgreSQL admin password"
18+
value = random_password.postgres_admin.result
1319
sensitive = true
1420
}

infra/modules/postgres/postgres_variables.tf

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,6 @@ variable "admin_username" {
2424
type = string
2525
}
2626

27-
variable "admin_password" {
28-
description = "The admin password of the PostgreSQL server"
29-
type = string
30-
sensitive = true
31-
}
32-
3327
variable "postgres_version" {
3428
description = "The version of the PostgreSQL server"
3529
type = string

infra/provider.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ terraform {
44
source = "hashicorp/azurerm"
55
version = "~>4.50.0"
66
}
7+
random = {
8+
source = "hashicorp/random"
9+
version = "~>3.6.0"
10+
}
711
}
812
}
913

infra/variables.tf

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,9 @@ variable "environment_name" {
1515
}
1616

1717
variable "admin_username" {
18-
default = "pgadmin"
19-
}
20-
21-
variable "admin_password" {
22-
description = "Admin password for PostgreSQL"
23-
sensitive = true
18+
description = "Admin username for PostgreSQL"
19+
type = string
20+
default = "pgadmin"
2421
}
2522

2623
# ------------------------------------------------------------------------------------------------------

src/app/main.py

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,6 @@
3131
Currently, this API does not require authentication (demo purposes).
3232
""",
3333
version="1.0.0",
34-
contact={
35-
"name": "PyCon Davao Team",
36-
"url": "https://pycon.ph",
37-
"email": "info@pycon.ph",
38-
},
3934
license_info={
4035
"name": "MIT",
4136
},
@@ -98,9 +93,7 @@ def create_member(member: schemas.MemberCreate, db: Session = Depends(get_db)):
9893
"""
9994
db_member = crud.get_member_by_email(db, email=member.email)
10095
if db_member:
101-
raise HTTPException(
102-
status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered"
103-
)
96+
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered")
10497
return crud.create_member(db=db, member=member)
10598

10699

@@ -152,9 +145,7 @@ def read_member(member_id: int, db: Session = Depends(get_db)):
152145
"""
153146
db_member = crud.get_member(db, member_id=member_id)
154147
if db_member is None:
155-
raise HTTPException(
156-
status_code=status.HTTP_404_NOT_FOUND, detail="Member not found"
157-
)
148+
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Member not found")
158149
return db_member
159150

160151

@@ -165,9 +156,7 @@ def read_member(member_id: int, db: Session = Depends(get_db)):
165156
summary="Update a member",
166157
response_description="Updated member details",
167158
)
168-
def update_member(
169-
member_id: int, member: schemas.MemberUpdate, db: Session = Depends(get_db)
170-
):
159+
def update_member(member_id: int, member: schemas.MemberUpdate, db: Session = Depends(get_db)):
171160
"""
172161
## Update a PyCon member
173162
@@ -199,7 +188,5 @@ def update_member(
199188
"""
200189
db_member = crud.update_member(db, member_id=member_id, member_update=member)
201190
if db_member is None:
202-
raise HTTPException(
203-
status_code=status.HTTP_404_NOT_FOUND, detail="Member not found"
204-
)
191+
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Member not found")
205192
return db_member

0 commit comments

Comments
 (0)