Skip to content

Commit d9378f3

Browse files
committed
examples: issue cyrilgdn#48
1 parent 89f50c2 commit d9378f3

File tree

3 files changed

+121
-0
lines changed

3 files changed

+121
-0
lines changed

examples/issues/48/test.tf

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
terraform {
2+
required_version = ">= 0.14"
3+
required_providers {
4+
postgresql = {
5+
source = "cyrilgdn/postgresql"
6+
version = ">=1.12"
7+
}
8+
}
9+
}
10+
11+
resource "postgresql_role" "owner" {
12+
for_each = toset([for idx in range(local.nb_dabatases) : format("test_db%d", idx)])
13+
name = each.key
14+
}
15+
16+
resource "postgresql_database" "db" {
17+
depends_on = [
18+
postgresql_role.owner,
19+
]
20+
for_each = toset([for idx in range(local.nb_dabatases) : format("test_db%d", idx)])
21+
name = each.key
22+
owner = each.key
23+
}
24+
25+
resource "postgresql_role" "role" {
26+
for_each = toset([for idx in range(local.nb_roles) : format("test_role%d", idx)])
27+
name = each.key
28+
}
29+
30+
resource "postgresql_grant" "grant" {
31+
depends_on = [
32+
postgresql_database.db,
33+
postgresql_role.role
34+
]
35+
36+
for_each = { for idx in range(local.nb_roles) : idx => format("test_role%d", idx) }
37+
38+
role = each.value
39+
database = format("test_db%d", each.key % local.nb_dabatases)
40+
schema = "public"
41+
object_type = "table"
42+
privileges = ["SELECT"]
43+
}
44+
45+
resource "postgresql_default_privileges" "dp" {
46+
depends_on = [
47+
postgresql_database.db,
48+
postgresql_role.role,
49+
]
50+
51+
for_each = { for idx in range(local.nb_roles) : idx => format("test_role%d", idx) }
52+
53+
role = each.value
54+
database = format("test_db%d", each.key % local.nb_dabatases)
55+
owner = format("test_db%d", each.key % local.nb_dabatases)
56+
schema = "public"
57+
object_type = "table"
58+
privileges = ["SELECT"]
59+
}
60+
61+
locals {
62+
nb_dabatases = 3
63+
nb_roles = 15 * local.nb_dabatases
64+
}
65+
66+
module "test" {
67+
for_each = toset([for idx in range(20) : format("test%d", idx)])
68+
source = "./test"
69+
role = each.key
70+
}

examples/issues/48/test/test.tf

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
variable "role" {}
2+
variable "grant_roles" {
3+
type = map
4+
default = {
5+
user1 = ["SELECT", "INSERT", "UPDATE", "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER"],
6+
user2 = ["SELECT", "INSERT", "UPDATE", "DELETE", "TRUNCATE", "REFERENCES", "TRIGGER"],
7+
user3 = ["SELECT"]
8+
}
9+
}
10+
11+
resource "postgresql_role" "owner" {
12+
name = "owner_${var.role}"
13+
}
14+
15+
resource "postgresql_role" "role" {
16+
name = var.role
17+
}
18+
19+
resource "postgresql_database" "db" {
20+
name = var.role
21+
owner = postgresql_role.role.name
22+
}
23+
24+
resource "postgresql_grant" "g" {
25+
for_each = var.grant_roles
26+
27+
role = postgresql_role.role.name
28+
database = postgresql_database.db.name
29+
schema = "public"
30+
object_type = "table"
31+
privileges = each.value
32+
}
33+
34+
resource "postgresql_default_privileges" "dp" {
35+
for_each = var.grant_roles
36+
37+
role = postgresql_role.role.name
38+
database = postgresql_database.db.name
39+
owner = postgresql_role.owner.name
40+
schema = "public"
41+
object_type = "table"
42+
privileges = each.value
43+
}

examples/issues/48/test/versions.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
terraform {
2+
required_providers {
3+
postgresql = {
4+
source = "cyrilgdn/postgresql"
5+
version = ">=1.12"
6+
}
7+
}
8+
}

0 commit comments

Comments
 (0)