Purpose:
yaml2terragrunt is an open-source project designed to enable the dynamic creation of Terragrunt files, folders, and configurations using a declarative YAML approach. The primary objective is to simplify and streamline the management of complex infrastructure-as-code setups, particularly for organizations dealing with multiple environments, regions, and services.
Aim:
The project aims to address several shortcomings of traditional Terragrunt folder structures:
-
Scalability issues: As projects grow, maintaining a consistent folder structure across multiple environments and regions becomes challenging.
-
Duplication of code: Traditional approaches often lead to repetitive configurations, violating the DRY (Don't Repeat Yourself) principle.
-
Limited flexibility: Static configurations make it difficult to share complex variables or computed values across different levels of the hierarchy.
-
Complexity in reorganization: Restructuring existing Terragrunt projects can be cumbersome and error-prone.
Future objectives:
Future objectives for yaml2terragrunt may include:
- Enhancing support for multi-region and multi-environment setups.
- Implementing advanced features for dynamic configuration generation.
- Developing tools to facilitate easier migration from existing Terragrunt structures.
- Improving integration with other infrastructure-as-code tools and workflows.
Summary:
By addressing these challenges, yaml2terragrunt aims to provide a more flexible, maintainable, and scalable approach to managing Terragrunt configurations for complex infrastructure projects.
Recommended Workflow
Create YAML configuration files with a standard structure Use the Python script to convert YAML to Terragrunt HCL Run Terragrunt/Terraform as normal with generated HCL files
Example YAML Configuration:
source: "github.com/module/path"
backend: "s3"
bucket: "my-terraform-state"
key: "environment/component"
region: "us-west-2"
inputs:
instance_type: "t3.micro"
environment: "staging"
Considerations and Limitations
Requires PyYAML and potentially tfmt for JSON to HCL conversion Complex configurations might need manual tweaking Performance overhead of conversion
Dependencies:
- PyYAML
- tfmt (optional, for JSON to HCL conversion)
- Python 3.7+
Potential Enhancements:
- Add robust error handling
- Support for complex Terragrunt inheritance
- Validation against Terraform schemas
- Templating support
Contributing:
Metadata
Release files for yaml2terragrunt 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| yaml2terragrunt-0.1.1.tar.gz | 15.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| yaml2terragrunt-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 32.5 kB
Release files / yaml2terragrunt-0.1.1.tar.gz
| Download URL | yaml2terragrunt-0.1.1.tar.gz |
|---|---|
| Size | 15.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f945900315deb7cba0c9b80741b08ee55c74fc75ed119190bb9f6f1b49b93704
|
|
BLAKE2b-256 checksum How to use checksums |
83e6748a2dbf8f3b4f2b2f763454b70271c9f0404999c92d7e409a42ca3e536e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.11.8 Linux/6.8.0-49-generic
|
Release files / yaml2terragrunt-0.1.1-py3-none-any.whl
| Download URL | yaml2terragrunt-0.1.1-py3-none-any.whl |
|---|---|
| Size | 16.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9bdd2dd80623e41cf1cc64dea8579c3e11ffdb389f25a0534b1491c42197e520
|
|
BLAKE2b-256 checksum How to use checksums |
a980d153171afcf98fd61ca70fd00f8a3146e636abc6d0ddf2e440a7ad3e9d60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.8.3 CPython/3.11.8 Linux/6.8.0-49-generic
|
Security for yaml2terragrunt 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.