Terraform Module to define a consistent naming convention by (namespace, stage, name, [attributes])
id
component: tenant
labels_as_tags
controls which labels are exported as tagsdescriptor_formats
generates new output descriptors
terraform-terraform-label
null-label
tenant
, labels_as_tags
, descriptor_formats
, add additional clarification, stop promoting obsolete module.gitignore
The PR can and should be merged into master
to update README and Bridgecrew without triggering a new release/version. These changes have no effect on the actual module in use and a release will create unnecessary ripple effects. However, merging to master
will update the README and badges, so is worthwhile, and the changes will move forward into the next release.
id
component: tenant
labels_as_tags
controls which labels are exported as tagsdescriptor_formats
generates new output descriptors
terraform-terraform-label
null-label
tenant
, labels_as_tags
, descriptor_formats
, add additional clarification, stop promoting obsolete module.gitignore
The PR can and should be merged into master
to update README and Bridgecrew without triggering a new release/version. These changes have no effect on the actual module in use and a release will create unnecessary ripple effects. However, merging to master
will update the README and badges, so is worthwhile, and the changes will move forward into the next release.
You now have control over the letter case of generated tag names and supplied labels, which means you also have control over the letter case of the ultimate id
.
Labels are the elements you can include in label_order
, namely namespace
, environment
, stage
, name
, and attributes
. For every non-empty label, a corresponding tag name is generated. For namespace
, environment
, stage
, the output is the formatted, normalized input. (By "normalized" we mean that it goes through regex_replace_chars
.), For attributes
, which is a list, each element is normalized, duplicates are removed, and the resulting list is converted to a string by joining the elements with the delimiter
(defaults to hyphen). For name
, which is special, the output is the same as id
, which is the joining of the labels in the order specified by label_order
and separated by delimiter
.
label_key_case
to one of upper
, lower
, or title
, which will result in generated tag
names in the corresponding case: NAME
, name
, or Name
. For backwards compatibility, title
is the defaultlabel_value_case
to one of upper
, lower
, title
, or none
, which will result in output label values in the corresponding case (with none
meaning no case conversion of any kind will be done, though the labels will still be subject to regex_replace_chars
). The case converted labels will show up not just in the module output of the labels themselves, but also in the tag
values and in the id
string.You can look at the test cases in examples/complete
and the expected results in test/src/examples_complete_test.go
to see examples of how this is supposed to work.
One interesting example is that you can create id
s in Pascal case by setting label_value_case = "title"
and delimiter = ""
.
exports/context.tf
id_length_limit
exports/context.tf
is what gets distributed and needs to be in synclabel_key_case
and label_value_case
by vars, not just by context attributes.Incorporates and closes #120
This version introduced a bug fix that technically is a breaking change.
The input regex_replace_chars
specifies a regular expression, and characters matching it are removed
from labels/id elements. Prior to this release, if the delimiter
itself matched the regular expression,
then the delimiter would be removed from the attributes
portion of the id
. This was not a problem
for most users, since the default delimiter was -
(dash) and the default regex allowed dashes, but
if you customized the delimiter and/or regex, this could affect you.
label_key_case
and label_value_case
by vars, not just by context attributes.Incorporates and closes #120
You now have control over the letter case of generated tag names and supplied labels, which means you also have control over the letter case of the ultimate id
.
Labels are the elements you can include in label_order
, namely namespace
, environment
, stage
, name
, and attributes
. For every non-empty label, a corresponding tag name is generated. For namespace
, environment
, stage
, the output is the formatted, normalized input. (By "normalized" we mean that it goes through regex_replace_chars
.), For attributes
, which is a list, each element is normalized, duplicates are removed, and the resulting list is converted to a string by joining the elements with the delimiter
(defaults to hyphen). For name
, which is special, the output is the same as id
, which is the joining of the labels in the order specified by label_order
and separated by delimiter
.
label_key_case
to one of upper
, lower
, or title
, which will result in generated tag
names in the corresponding case: NAME
, name
, or Name
. For backwards compatibility, title
is the defaultlabel_value_case
to one of upper
, lower
, title
, or none
, which will result in output label values in the corresponding case (with none
meaning no case conversion of any kind will be done, though the labels will still be subject to regex_replace_chars
). The case converted labels will show up not just in the module output of the labels themselves, but also in the tag
values and in the id
string.You can look at the test cases in examples/complete
and the expected results in test/src/examples_complete_test.go
to see examples of how this is supposed to work.
One interesting example is that you can create id
s in Pascal case by setting label_value_case = "title"
and delimiter = ""
.
exports/context.tf
still not backwards compatibleid_length
not included in exports/context.tf
null-label
. The canonical context = module.this.context
fails if module.this.context
is an older versioncontext.tf
does not incorporate var.label_key_case
and var.label_value_case
into the module.this
object, preventing those variables from taking effect in the root module's module.this
.With this release, you gain control over the letter case of generated tag names and supplied labels, which means you also have control over the letter case of the ultimate id
.
Labels are the elements you can include in label_order
, namely namespace
, environment
, stage
, name
, and attributes
. For every non-empty label, a corresponding tag name is generated. For namespace
, environment
, stage
, the output is the formatted, normalized input. (By "normalized" we mean that it goes through regex_replace_chars
.), For attributes
, which is a list, each element is normalized, duplicates are removed, and the resulting list is converted to a string by joining the elements with the delimiter
(defaults to hyphen). For name
, which is special, the output is the same as id
, which is the joining of the labels in the order specified by label_order
and separated by delimiter
.
label_key_case
to one of upper
, lower
, or title
, which will result in generated tag
names in the corresponding case: NAME
, name
, or Name
. For backwards compatibility, title
is the defaultlabel_value_case
to one of upper
, lower
, title
, or none
, which will result in output label values in the corresponding case (with none
meaning no case conversion of any kind will be done, though the labels will still be subject to regex_replace_chars
). The case converted labels will show up not just in the module output of the labels themselves, but also in the tag
values and in the id
string.You can look at the test cases in examples/complete
and the expected results in test/src/examples_complete_test.go
to see examples of how this is supposed to work.
One interesting example is that you can create id
s in Pascal case by setting label_value_case = "title"
and delimiter = ""
.
var.attributes
to end of context.attributes
, not vice versaBreaking change: This release updates minimum Terraform version requirement to 0.12.26
context.tf
to use registry reference>= 0.12.26
context.tf
Adds support for Terraform 0..14
(currently in beta2
)
I've currently got it pinned to < 0.14.1
to be conservative. Can update to < 0.15
or similar.
versions.tf
to support terraform 0.14
0.13
. The proposed workaround for that unrelated issue does not work for me at this time.0.14
which is in beta, now.Fixes https://github.com/cloudposse/terraform-null-label/issues/104
context.tf
(examples/autoscalinggroup/context.tf
) with copy of filecontext.tf
and clean up documentation comments inside the file