Releases: cloudposse/terraform-null-label
v0.25.0
Add "tenant", "labels_as_tags", and "descriptors" @Nuru (#132)
what
- Add additional label and
id
component:tenant
- New input
labels_as_tags
controls which labels are exported as tags - New input
descriptor_formats
generates new outputdescriptors
- Update README, remove link to obsolete
terraform-terraform-label
why
- Support users that host resources on behalf of and/or dedicated to single customers
- Supersedes and closes #131, giving people control over which tags the module generates
- Simple mechanism for creating multiple identifiers from the same inputs, reducing the need to create multiple instances of
null-label
- Document
tenant
,labels_as_tags
,descriptor_formats
, add additional clarification, stop promoting obsolete module
Fix: Update README Snippets @korenyoni (#130)
what
- Update README snippets to reflect use of Terraform Registry.
why
- Including snippets that reflect use of the Terraform Registry make it easier for users to quickly instantiate a null_label module.
- README is out of date and does not include snippets that reflect use of the Terraform Registry.
references
- N/A
Bridgecrew compliance @Nuru (#125)
what
- Resolve Bridgecrew compliance complaint about example Autoscaling Group (BC_AWS_GENERAL_31)
- Fix typo in README
- Include Terraform lock file in
.gitignore
why
- Get clean Bridgecrew badge
- Correct confusing error
- Ensure lock files are not checked into GitHub
note
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.
v0.25.0-rc.1
Add "tenant", "labels_as_tags", and "descriptors" @Nuru (#132)
what
- Add additional label and
id
component:tenant
- New input
labels_as_tags
controls which labels are exported as tags - New input
descriptor_formats
generates new outputdescriptors
- Update README, remove link to obsolete
terraform-terraform-label
why
- Support users that host resources on behalf of and/or dedicated to single customers
- Supersedes and closes #131, giving people control over which tags the module generates
- Simple mechanism for creating multiple identifiers from the same inputs, reducing the need to create multiple instances of
null-label
- Document
tenant
,labels_as_tags
,descriptor_formats
, add additional clarification, stop promoting obsolete module
Fix: Update README Snippets @korenyoni (#130)
what
- Update README snippets to reflect use of Terraform Registry.
why
- Including snippets that reflect use of the Terraform Registry make it easier for users to quickly instantiate a null_label module.
- README is out of date and does not include snippets that reflect use of the Terraform Registry.
references
- N/A
Bridgecrew compliance @Nuru (#125)
what
- Resolve Bridgecrew compliance complaint about example Autoscaling Group (BC_AWS_GENERAL_31)
- Fix typo in README
- Include Terraform lock file in
.gitignore
why
- Get clean Bridgecrew badge
- Correct confusing error
- Ensure lock files are not checked into GitHub
note
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.
v0.24.1 Allow control of letter case of outputs
Allow control of letter case of outputs @SweetOps (#107)
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
.
- You can set
label_key_case
to one ofupper
,lower
, ortitle
, which will result in generatedtag
names in the corresponding case:NAME
,name
, orName
. For backwards compatibility,title
is the default - You can set
label_value_case
to one ofupper
,lower
,title
, ornone
, which will result in output label values in the corresponding case (withnone
meaning no case conversion of any kind will be done, though the labels will still be subject toregex_replace_chars
). The case converted labels will show up not just in the module output of the labels themselves, but also in thetag
values and in theid
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 = ""
.
Include updates to exports/context.tf @Nuru (#122 and #123)
what
- Include updates to
exports/context.tf
- Update README with features and compatibilty
- Add validation for
id_length_limit
why
- The
exports/context.tf
is what gets distributed and needs to be in sync - Replace outdated information
- Was not validated earlier because validators are not supported in TF 0.12 but now we are dropping support for TF 0.12 and so we can add validators
Restore backward compatibility with v0.22.1 and earlier @Nuru (#121)
what
- Restore backward compatibility with v0.22.1 and earlier
- Allow setting of
label_key_case
andlabel_value_case
by vars, not just by context attributes.
why
- Allow interoperability of old and new modules
- Normally, root modules make settings via individual variables, not by setting an entire context block.
Incorporates and closes #120
🐛 Bug fix/Breaking change
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.
v0.24.0
Restore backward compatibility with v0.22.1 and earlier @Nuru (#121)
what
- Restore backward compatibility with v0.22.1 and earlier
- Allow setting of
label_key_case
andlabel_value_case
by vars, not just by context attributes.
why
- Allow interoperability of old and new modules
- Normally, root modules make settings via individual variables, not by setting an entire context block.
Incorporates and closes #120
Allow control of letter case of outputs @SweetOps (#107)
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
.
- You can set
label_key_case
to one ofupper
,lower
, ortitle
, which will result in generatedtag
names in the corresponding case:NAME
,name
, orName
. For backwards compatibility,title
is the default - You can set
label_value_case
to one ofupper
,lower
,title
, ornone
, which will result in output label values in the corresponding case (withnone
meaning no case conversion of any kind will be done, though the labels will still be subject toregex_replace_chars
). The case converted labels will show up not just in the module output of the labels themselves, but also in thetag
values and in theid
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 = ""
.
Known issues
exports/context.tf
still not backwards compatible- Validation for
id_length
not included inexports/context.tf
v0.23.0 pre-release: Allow control of letter case of outputs
Known issues
- Does not interoperate with earlier versions of
null-label
. The canonicalcontext = module.this.context
fails ifmodule.this.context
is an older version context.tf
does not incorporatevar.label_key_case
andvar.label_value_case
into themodule.this
object, preventing those variables from taking effect in the root module'smodule.this
.
feat: add support for setting letter case of context tags @SweetOps (#107)
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
.
- You can set
label_key_case
to one ofupper
,lower
, ortitle
, which will result in generatedtag
names in the corresponding case:NAME
,name
, orName
. For backwards compatibility,title
is the default - You can set
label_value_case
to one ofupper
,lower
,title
, ornone
, which will result in output label values in the corresponding case (withnone
meaning no case conversion of any kind will be done, though the labels will still be subject toregex_replace_chars
). The case converted labels will show up not just in the module output of the labels themselves, but also in thetag
values and in theid
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 = ""
.
v0.22.1
Add var.attributes to end of context.attributes, not vice versa @Nuru (#114)
what
- Add
var.attributes
to end ofcontext.attributes
, not vice versa - Update to current workflows (with some exceptions)
why
- Modules should append to attributes passed in, not insert themselves ahead of others
- New features, like auto-format (but holding back some, because this is a special module)
references
v0.22.0
Breaking change: This release updates minimum Terraform version requirement to 0.12.26
Convert context.tf to registry reference @Nuru (#110)
what
- Convert
context.tf
to use registry reference - Update version requirement to
>= 0.12.26
- Switch auto-publish to draft mode
why
- New standard way to reference modules
- Minimum version that supports registry references
- Ensure that version numbers are set manually and match what is in
context.tf
v0.21.0
v0.20.0
Update versions.tf to support tf .14 @kiddom-kq (#105)
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.
what
- Bumps
versions.tf
to support terraform0.14
why
- I make extensive use of this label module (it's an amazing contribution to the TF ecosystem. Thank you!)
- I am currently running into an unrelated issue w/ TF
0.13
. The proposed workaround for that unrelated issue does not work for me at this time. - The solution is to use tf
0.14
which is in beta, now.
references
Fixes #104
v0.19.2
Remove symlink, polish documentation @Nuru (#101)
what
- Replace symbolic link to
context.tf
(examples/autoscalinggroup/context.tf
) with copy of file - Move module to top of
context.tf
and clean up documentation comments inside the file
why
- Terraform clones the whole repo, not just the top directory, and the symbolic link causes problems for some IDEs
- Module contains version number and source URL, which should be at the top of the file