Skip to content

Commit 4bc5f2f

Browse files
committed
Module is starting to do what I want
1 parent 65ae529 commit 4bc5f2f

File tree

5 files changed

+134
-14
lines changed

5 files changed

+134
-14
lines changed

main.tf

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,33 @@
22
# Terraform module to provide consistent naming
33
#
44

5+
resource "null_resource" "pre1" {
6+
triggers = {
7+
attributes = "${lower(format("%s", join(var.delimiter, compact(var.attributes))))}"
8+
environment = "${lower(format("%s", var.environment))}"
9+
name = "${lower(format("%s", var.name))}"
10+
organization = "${lower(format("%s", var.organization))}"
11+
}
12+
}
13+
resource "null_resource" "pre2" {
14+
triggers = {
15+
name_env = "${var.namespace-env ? join(var.delimiter, list(null_resource.pre1.triggers.environment, null_resource.pre1.triggers.name)) : null_resource.pre1.triggers.name}"
16+
}
17+
}
18+
resource "null_resource" "pre3" {
19+
triggers = {
20+
name_org = "${var.namespace-org ? join(var.delimiter, list(null_resource.pre1.triggers.organization, null_resource.pre2.triggers.name_env)) : null_resource.pre2.triggers.name_env}"
21+
}
22+
}
523
resource "null_resource" "this" {
624
count = "${var.enabled ? 1 : 0}"
725
triggers = {
8-
environment = "${lower(format("%s", var.environment))}"
9-
name = "${var.namespaced ? lower(format("%s-%s", var.environment, var.name)) : lower(format("%s", var.name))}"
26+
attributes = "${null_resource.pre1.triggers.attributes}"
27+
environment = "${null_resource.pre1.triggers.environment}"
28+
organization = "${null_resource.pre1.triggers.organization}"
29+
name = "${null_resource.pre3.triggers.name_org}"
30+
name_20 = "${substr(replace(null_resource.pre3.triggers.name_org,"_","-"),0,19 <= length(null_resource.pre3.triggers.name_org) ? 19 : length(null_resource.pre3.triggers.name_org))}"
31+
name_32 = "${substr(replace(null_resource.pre3.triggers.name_org,"_","-"),0,31 <= length(null_resource.pre3.triggers.name_org) ? 31 : length(null_resource.pre3.triggers.name_org))}"
1032
/* FIX: wants only strings
1133
tags = "${ merge(
1234
var.tags,

outputs.tf

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11

2+
output "attributes" {
3+
description = "Attribute string lowercase"
4+
value = "${null_resource.this.triggers.attributes}"
5+
}
26
output "environment" {
3-
description = "Environment name"
7+
description = "Environment name lowercase"
48
value = "${null_resource.this.triggers.environment}"
59
}
610
output "name" {
711
description = "Name"
812
value = "${null_resource.this.triggers.name}"
913
}
14+
output "name_20" {
15+
description = "Name truncated to 20 characters"
16+
value = "${null_resource.this.triggers.name_20}"
17+
}
18+
output "name_32" {
19+
description = "Name truncated to 32 characters"
20+
value = "${null_resource.this.triggers.name_32}"
21+
}
22+
output "organization" {
23+
description = "Organization name lowercase"
24+
value = "${null_resource.this.triggers.organization}"
25+
}
26+
1027
/*
1128
output "tags" {
1229
description = "Tags"

test/main.tf

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,42 @@
11

22
module "labels" {
3-
source = "../"
4-
name = "CapMe"
5-
environment = "Dev"
3+
source = "../"
4+
name = "CapMe"
5+
environment = "Dev"
6+
organization = "CorpXyZ"
7+
}
8+
9+
/*
10+
module "labels-disabled" {
11+
source = "../"
12+
name = "CapMe"
13+
environment = "Dev"
14+
organization = "CorpXyZ"
15+
enabled = false
16+
}
17+
*/
18+
19+
module "labels-env" {
20+
source = "../"
21+
name = "CapMe"
22+
environment = "Dev"
23+
organization = "CorpXyZ"
24+
namespace-env = true
25+
namespace-org = false
26+
}
27+
module "labels-org" {
28+
source = "../"
29+
name = "CapMe"
30+
environment = "Dev"
31+
organization = "CorpXyZ"
32+
namespace-env = false
33+
namespace-org = true
34+
}
35+
module "labels-org-env" {
36+
source = "../"
37+
name = "Application"
38+
environment = "Environment"
39+
organization = "Organization"
40+
namespace-env = true
41+
namespace-org = true
642
}

test/outputs.tf

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,29 @@
11

2+
output "attributes" {
3+
description = "Attribute string lowercase"
4+
value = "${module.labels.attributes}"
5+
}
26
output "environment" {
3-
description = "Environment name"
7+
description = "Environment name lowercase"
48
value = "${module.labels.environment}"
59
}
610
output "name" {
711
description = "Name"
812
value = "${module.labels.name}"
913
}
14+
output "name_20" {
15+
description = "Name truncated to 20 characters"
16+
value = "${module.labels.name_20}"
17+
}
18+
output "name_32" {
19+
description = "Name truncated to 32 characters"
20+
value = "${module.labels.name_32}"
21+
}
22+
output "organization" {
23+
description = "Organization name lowercase"
24+
value = "${module.labels.organization}"
25+
}
26+
1027
/*
1128
output "tags" {
1229
description = "Tags"

variables.tf

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,51 @@
11
// Standard Variables
2-
3-
variable "name" {
4-
description = "Name for the EFS Filesystem"
2+
variable "attributes" {
3+
description = "Suffix name with additional attributes (policy, role, etc.)"
4+
type = "list"
5+
default = []
6+
}
7+
variable "delimiter" {
8+
description = "Delimiter to be used between `name`, `namespaces`, `attributes`, etc."
9+
default = "-"
510
}
611
variable "enabled" {
7-
description = "Enable use of module"
12+
description = "Enable use of module. Set to false to not create resources"
813
default = true
914
}
1015
variable "environment" {
1116
description = "Environment (ex: dev, qa, stage, prod)"
1217
}
13-
variable "namespaced" {
14-
description = "Namespace all resources (prefixed with the environment)?"
18+
variable "name" {
19+
description = "Name for the EFS Filesystem"
20+
}
21+
variable "namespace-env" {
22+
description = "Prefix name with the environment"
1523
default = true
1624
}
25+
variable "namespace-org" {
26+
description = "Prefix name with the organization. If both env and org namespaces are used, format will be <org>-<env>-<name>"
27+
default = false
28+
}
29+
variable "organization" {
30+
description = "Organization name"
31+
default = ""
32+
}
1733
variable "tags" {
1834
description = "A map of tags to add to all resources"
1935
type = "map"
2036
default = {}
2137
}
2238

23-
// Module specific Variables
39+
// Internal Variables
40+
variable "name_lower" {
41+
description = "Internal"
42+
default = ""
43+
}
44+
variable "name_env" {
45+
description = "Internal"
46+
default = ""
47+
}
48+
variable "name_org" {
49+
description = "Internal"
50+
default = ""
51+
}

0 commit comments

Comments
 (0)