terraflex
Construct custom backends for your terraform project!
why?
I started this project to provide a free solution for homelabs IAC.
The major constraint here is to find a free backend that I feel safe to use and to have a 0 bootstrap layer if possible.
I found several solutions around this - but most were using a 3rd party hosted http backend servers.
Those backends were problematic for me because I had issues trusting them to store my sensitive state files - and the fact that I didn't own the storage location - made me afraid that I might lose those state files - and we all know how bad it is to lose your state files :P.
The closest solution I found was terraform-backend-git - which this project was heavily influenced on - so go check it out as well!
Eventually I had the idea of creating an extendable modular terraform http backend - which allows customizing the state using transformations (like encryption), and getting starting with it will be as simple as running single command.
Documentation
Check out documentations here: docs
Installation
Recommended: Use uv tooling
Install uv (if not already):
curl -Ls https://astral.sh/uv/install.sh | sh
Install terraflex globally using uv tooling (from PyPI):
uv tool install terraflex
Or install the latest version directly from GitHub:
uv tool install git+https://github.com/IamShobe/terraflex.git
Upgrade terraflex:
uv tool upgrade terraflex
To use terraflex in a project with dev dependencies, you can still use:
uv sync -G dev
Getting started
Git backends preparation
- Create new repository to store your state at
- Make sure the repository is initialized with primary branch (
main)
Common
- To start - cd to your IAC repo, for example:
~/git/iac - Run:
terraflex initFollow the wizard - Update your backend:
backend "http" { address = "http://localhost:8600/state" lock_address = "http://localhost:8600/lock" lock_method = "PUT" unlock_address = "http://localhost:8600/lock" unlock_method = "DELETE" }
- Run any terraform command using
terraflex wrap -- <command>- for example:terraflex wrap -- terraform init
- You can also create a full shell with the context of the backend:
terraflex wrap -- $SHELL
Others
- Checkout issues to see roadmap.
Metadata
Release files for terraflex 0.4.3
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 | Actions |
|---|---|---|---|---|
| terraflex-0.4.3.tar.gz | 35.7 kB | Without provenance | Details for terraflex-0.4.3.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| terraflex-0.4.3-py3-none-any.whl | Python 3 | none | any | Details for terraflex-0.4.3-py3-none-any.whl |
Total release size: 82.1 kB
Release files / terraflex-0.4.3.tar.gz
| Download URL | terraflex-0.4.3.tar.gz |
|---|---|
| Size | 35.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
771b3e71ecdb226217d322a8fd0994d83085858ab3bbc304d2ea4b0dc6219bbe
|
|
BLAKE2b-256 checksum How to use checksums |
e855959bb472a631079d0d9f4f3a01ef5d5ea3dc41e089932edd356a24910ede
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / terraflex-0.4.3-py3-none-any.whl
| Download URL | terraflex-0.4.3-py3-none-any.whl |
|---|---|
| Size | 46.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e8f436d168c9fb8f3944a3d758ea2fb0f8e4b241eb217511a57f3c4ae07895b4
|
|
BLAKE2b-256 checksum How to use checksums |
87c52c882a5dc389b05aff35e745932f9d5cd212743420f5a23a547f03125443
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for terraflex 0.4.3
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.