-![Contributors](https://img.shields.io/github/contributors/bendoerr-terraform-modules/terraform-null-label?color=dark-green) ![Issues](https://img.shields.io/github/issues/bendoerr-terraform-modules/terraform-null-label) ![GitHub Workflow Status (with event)](https://img.shields.io/github/actions/workflow/status/bendoerr-terraform-modules/terraform-null-label/test.yml)
-![GitHub tag (with filter)](https://img.shields.io/github/v/tag/bendoerr-terraform-modules/terraform-null-label?filter=v*)
-![License](https://img.shields.io/github/license/bendoerr-terraform-modules/terraform-null-label)
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/graphs/contributors)
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/issues)
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/pulls)
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/actions/workflows/test.yml)
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/actions/workflows/lint.yml)
+[](https://registry.terraform.io/modules/bendoerr-terraform-modules/label/null/latest)
+[](https://securityscorecards.dev/viewer/?uri=github.com/bendoerr-terraform-modules/terraform-null-label)
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/blob/main/LICENSE.txt)
## About The Project
My opinionated label module.
+This Terraform module consumes my `terraform-null-context` and produces
+consistent names and tags for all of my resources. It implements a strict naming
+and tagging convention that follows the format from
+[cloudposse/terraform-null-label](https://github.com/cloudposse/terraform-null-label).
+
+The Cloud Posse label module provides detailed documentation and reasoning
+however by itself it has too many knobs and provides more options that I use.
+This module configures the Cloud Posse label exactly how I like it while taking
+advantage of my context module to carry standard part of the label around.
+
+
+
## Usage
-```
+```terraform
module "context" {
- source = "git@github.com:bendoerr-terraform-modules/terraform-null-context?ref=v0.4.0"
- namespace = "brd"
- role = "production'
+ source = "bendoerr-terraform-modules/context/null"
+ version = "xxx"
+ namespace = "bd"
+ role = "production"
region = "us-east-1"
- project = "example'
+ project = "example"
}
-module "label_thing" {
- source = "git@github.com:bendoerr-terraform-modules/terraform-null-label?ref=v0.4.0"
+module "label" {
+ source = "bendoerr-terraform-modules/label/null"
+ version = "xxx"
context = module.context.shared
- thing = "thing"
+ name = "function"
}
-output "label_id" {
- // brd-prod-ue1-example-thing
- value = module.label_thing.id
+resource "aws_lambda_function" "function" {
+ function_name = module.label.id # bd-prd-ue1-example-function
+ tags = module.label.tags # { Name: bd-prd-ue1-example-function,
+ # Namespace: bd,
+ # Role: production,
+ # Region: us-east-1,
+ # Project: example,
+ # Environment: prod-ue1,
+ # }
+ ...
}
+
+resource "aws_route53_record" "function" {
+ name = "${module.label.dns_name}.${vars.zone_name}" # function.ue1.cloud.bendoerr.me
+ # assuming vars.zone_name = cloud.bendoerr.me
+ ...
+}
+```
+
+### Cost
+
+
+
+```text
+Project: bendoerr-terraform-modules/terraform-null-label
+
+ Name Monthly Qty Unit Monthly Cost
+
+ OVERALL TOTAL $0.00
+──────────────────────────────────
+No cloud resources were detected
```
+This module creates no resources and will not generate any cost against any
+cloud provider you use.
+
+
### Requirements
| Name | Version |
|------|---------|
| [terraform](#requirement\_terraform) | >= 0.13 |
-### Providers
-
-No providers.
-
### Modules
| Name | Source | Version |
|------|--------|---------|
| [label](#module\_label) | cloudposse/label/null | 0.25.0 |
-### Resources
-
-No resources.
-
### Inputs
| Name | Description | Type | Default | Required |
@@ -96,18 +141,30 @@ No resources.
| [project](#output\_project) | Normalized project |
| [tags](#output\_tags) | Normalized Tag map |
| [tags\_as\_list\_of\_maps](#output\_tags\_as\_list\_of\_maps) | Additional tags as a list of maps, which can be used in several AWS resources |
-
+
## Roadmap
-See the [open issues](https://github.com/bendoerr-terraform-modules/terraform-null-label/issues) for a list of proposed features (and known issues).
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/issues)
+
+See the
+[open issues](https://github.com/bendoerr-terraform-modules/terraform-null-label/issues)
+for a list of proposed features (and known issues).
## Contributing
-Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are **greatly appreciated**.
-* If you have suggestions for adding or removing projects, feel free to [open an issue](https://github.com/bendoerr-terraform-modules/terraform-null-label/issues/new) to discuss it, or directly create a pull request after you edit the *README.md* file with necessary changes.
-* Please make sure you check your spelling and grammar.
-* Create individual PR for each suggestion.
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/pulls)
+
+Contributions are what make the open source community such an amazing place to
+be learn, inspire, and create. Any contributions you make are **greatly
+appreciated**.
+
+- If you have suggestions for adding or removing projects, feel free to
+ [open an issue](https://github.com/bendoerr-terraform-modules/terraform-null-label/issues/new)
+ to discuss it, or directly create a pull request after you edit the
+ _README.md_ file with necessary changes.
+- Please make sure you check your spelling and grammar.
+- Create individual PR for each suggestion.
### Creating A Pull Request
@@ -119,13 +176,32 @@ Contributions are what make the open source community such an amazing place to b
## License
-Distributed under the MIT License. See [LICENSE](https://github.com/bendoerr-terraform-modules/terraform-null-label/blob/main/LICENSE.txt) for more information.
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/blob/main/LICENSE.txt)
+
+Distributed under the MIT License. See
+[LICENSE](https://github.com/bendoerr-terraform-modules/terraform-null-label/blob/main/LICENSE.txt)
+for more information.
## Authors
-* **Benjamin R. Doerr** - *Terraformer* - [Benjamin R. Doerr](https://github.com/bendoerr/) - *Built Ben's Terraform Modules*
+[](https://github.com/bendoerr-terraform-modules/terraform-null-label/graphs/contributors)
+
+- **Benjamin R. Doerr** - _Terraformer_ -
+ [Benjamin R. Doerr](https://github.com/bendoerr/) - _Built Ben's Terraform
+ Modules_
+
+## Supported Versions
+
+Only the latest tagged version is supported.
+
+## Reporting a Vulnerability
+
+See [SECURITY.md](SECURITY.md).
## Acknowledgements
-* [ShaanCoding (ReadME Generator)](https://github.com/ShaanCoding/ReadME-Generator)
-* [CloudPossie (Terraform Null Label - Inspiration)](https://github.com/cloudposse/terraform-null-label)
+- [ShaanCoding (ReadME Generator)](https://github.com/ShaanCoding/ReadME-Generator)
+- [CloudPossie (Terraform Null Label - Inspiration)](https://github.com/cloudposse/terraform-null-label)
+- [OpenSSF - Helping me follow best practices](https://openssf.org/)
+- [StepSecurity - Helping me follow best practices](https://app.stepsecurity.io/)
+- [Infracost - Better than AWS Calculator](https://www.infracost.io/)
diff --git a/docs/usage-dark.png b/docs/usage-dark.png
new file mode 100644
index 0000000000000000000000000000000000000000..4c1167005541e9e57637434ac611e78bff74a637
GIT binary patch
literal 95055
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