-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathinternal.tf
78 lines (68 loc) · 2.03 KB
/
internal.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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**
* Module internal resources.
*/
// Generate a random pet name for memorability.
resource "random_pet" "project_prefix" {
keepers = {
suffix_id = random_id.project_suffix.id
}
}
// Generate a random ID with 32 bits of randomness for uniqueness.
resource "random_id" "project_suffix" {
byte_length = 4
}
// Build a prefix for our project ID. If you want a `custom_id` and don't want a prefix, leave `id_prefix` empty and set `random_prefix` to `'false'`.
data "null_data_source" "project_prefix" {
inputs = {
value = var.random_prefix ? random_pet.project_prefix.id : var.id_prefix
}
}
// Build a random ID that is both memorable *and* unique.
data "null_data_source" "random_project_id" {
inputs = {
value = format(
"%s-%s",
data.null_data_source.project_prefix.outputs["value"],
random_id.project_suffix.hex,
)
}
}
// Build a custom ID.
data "null_data_source" "custom_project_id" {
inputs = {
value = data.null_data_source.project_prefix.outputs["value"] == "" ? var.custom_id : format(
"%s-%s",
data.null_data_source.project_prefix.outputs["value"],
var.custom_id,
)
}
}
// Return the correct project ID—a non-empty custom ID takes precedence.
data "null_data_source" "project_id" {
inputs = {
value = var.custom_id == "" ? data.null_data_source.random_project_id.outputs["value"] : data.null_data_source.custom_project_id.outputs["value"]
}
}
// Random project name if one wasn't specified already.
data "null_data_source" "project_name" {
inputs = {
value = var.display_name == "" ? title(
join(
" ",
slice(
split("-", data.null_data_source.project_id.outputs["value"]),
0,
2,
),
),
) : var.display_name
}
}
// Fetch information about the organization.
data "google_organization" "details" {
organization = var.organization_id
}
// Fetch information about the project's default service account.
data "google_compute_default_service_account" "details" {
project = google_project.project.id
}