-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmain.tf
39 lines (33 loc) · 1.18 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Load config file
data "sops_file" "config" {
source_file = "${path.module}/config.enc.json"
}
locals {
config = nonsensitive(jsondecode(data.sops_file.config.raw))
}
// Get normalized usernames
module "normalize" {
source = "Olivr/normalize/null"
version = "1.0.0"
for_each = toset([for member in local.config.members : member.first_name])
# for_each = nonsensitive(jsondecode(data.sops_file.config.raw)).members
string = each.value
}
locals {
members = { for member in local.config.members : module.normalize[member.first_name].lower => member }
}
// Create emails for each family member
module "members" {
source = "./modules/user"
for_each = local.members
username = each.key
aliases = lookup(each.value, "aliases", [])
first_name = title(each.value.first_name)
last_name = title(lookup(each.value, "last_name", "Barissat"))
recovery_email = lookup(each.value, "recovery_email", null)
primary_domain = local.config["primary_domain"]
forwarded_domains = local.config["forwarded_domains"]
}
output "email_addresses" {
value = { for member in keys(local.members) : member => module.members[member].email_addresses }
}