Skip to main content

Terrable

PyPI version build status coverage report Code style: black Code style: flake8 Code style: mypy PyPI - License

Terraform private module manager that uses S3 as a backend. Includes simple versioning of modules to make forward migration easier. Terraform supports referencing modules stored in S3 as compressed files (see S3 Bucket for more details). However, managing those packages is not part of Terraform itself. That's where terr•able comes in. The terrable CLI allows for bundling terraform module directories into compressed files and deploying them to S3 with simple incremental versioning. That way modules changes can be gradually introduced in dependent projects as needed without causing conflicts.

Installation

Terrable is available via pip:

$ pip install terrable

or via poetry:

# poetry install terrable --dev

Once installed, the terrable CLI command will be available in your terminal.

Usage

Terrable operates primarily on a directory that contains within it one or more module directories. For example:

+---modules
|   \---aws-lambda-function
|           main.tf
|           output.tf
|           variables.tf
|           policy.json
|
|   \---aws-dynamo-db-table
|           main.tf
|           output.tf
|           variables.tf

Here the root "modules" folder contains two modules "aws-lambda-function" and "aws-dynamo-db-table". To deploy these as modules via terrable to an S3 bucket execute the command from the parent directory of the modules folder:

$ terrable publish ./modules/ --bucket=<BUCKET_NAME> --profile=<AWS_PROFILE_NAME>

This command will iterate through each folder inside the modules directory and publish any that have changed since their previous publish. Any modules found not to have changed will be skipped. This can be overridden with the --force flag. It's also possible to publish only specific modules within that folder by including the --target=aws-lambda-function flag. This flag can be specified multiple times to publish a select number of specific modules for a given command.

To inspect modules, there is a list command:

$ terrable list <MODULE_NAME> --bucket=<BUCKET_NAME> --profile=<AWS_PROFILE_NAME>

This command will print all of the versions and associated metadata for the specified module.

Metadata

Release files for terrable 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for terrable 0.2.1
File Size Uploaded Provenance Actions
terrable-0.2.1.tar.gz 15.0 kB Without provenance Details for terrable-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for terrable 0.2.1
File Interpreter ABI Platform Actions
terrable-0.2.1-py3-none-any.whl Python 3 none any Details for terrable-0.2.1-py3-none-any.whl

Total release size: 35.5 kB

Release files / terrable-0.2.1.tar.gz

Download URL terrable-0.2.1.tar.gz
Size 15.0 kB
Tags Source
SHA-256 checksum
How to use checksums
97ea93a304174b0af3316572e230fa47e5a17017f37e65303d00afe2bd5b6ca6
BLAKE2b-256 checksum
How to use checksums
bf181e5c5a2301d6f5988fc963c1aa737964a1406209a0286f2fab4c36ff814b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.8 CPython/3.9.7 Linux/5.4.109+

Release files / terrable-0.2.1-py3-none-any.whl

Download URL terrable-0.2.1-py3-none-any.whl
Size 20.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
96e3f5ee686d7d874c8f61928c9c86ce89f17c7ad381316c4de807a9440245d2
BLAKE2b-256 checksum
How to use checksums
21f64cc89d1c553fc8a326e1f8818ebfafba49e00d9703accb274cf313bdae5e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.1.8 CPython/3.9.7 Linux/5.4.109+

Security for terrable 0.2.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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page