The Terrarium project aims to empower platform engineering professionals by providing a comprehensive suite of tools for creating reusable Terraform templates. In the evolving landscape of DevOps, Terrarium aligns with the principles of Internal Developer Platforms (IDP), ensuring streamlined infrastructure provisioning and management.
-
Download Terrarium and extract the TAR archive.
wget https://github.com/cldcvr/terrarium/releases/download/$VERSION/terrarium-$VERSION-linux-amd64.tar.gz
Example:
wget https://github.com/cldcvr/terrarium/releases/download/v0.4/terrarium-v0.4-macos-amd64.tar.gz
tar -xzf terrarium-v0.4-macos-amd64.tar.gz
-
Move the
terrarium
binary to a directory in your system's PATH, like/usr/local/bin/
. Add this to your shell:PATH="$PATH:/path/to/terrarium"
-
Alternatively, install using the source code. Clone this repo and execute:
make install
Important
Make sure you have go version 1.20 or above if not try this link to download https://go.dev/dl/
-
Verify the Installation
To check if Terrarium is installed correctly, open your terminal or command prompt and run:
terrarium version
Tool | Description |
---|---|
VS Code Extension | Assists DevOps in writing Terraform code and managing dependencies. |
CLI | Command-line interface for working with Terrarium and app templates. |
Web UI (coming soon) | User interface for visualizing Terrarium Platform Templates. |
API (internal) | Internal query server for Terrarium Farm repo content. |
- App Manifest - App Manifest provides a way for an applications to declare its infrastructure requirements using generic dependency interfaces. Such as, a working Terraform template can be generated at the time of deployment using the best practice defined in the Terrarium platform template.
- Terrarium Dependency Interface - The Terrarium Dependency Interface is an agreement that outlines how applications and Infrastructure as Code (IaC) interact. Dependencies are implemented in platforms and used in apps. A single dependency can be built into various platforms but only once per platform. However, an app can use the same dependency multiple times.
- Terrarium Platform Framework - The Terrarium Platform Framework helps make reusable templates with Terraform. A Terrarium Platform Template implements dependencies in an opinionated way, exposing only relevant controls to the app and generating a defined set of outputs for the app to use as environment variables.
- Terrarium Farm - The Terrarium Farm is a repository containing seed data like tf-modules, dependencies, taxonomy & platforms. The farm repository has workflows to ensure the sanity of the content as well as scan the content to extract key information. The Ollion maintained Farm repo is at cldcvr/terrarium-farm.
flowchart LR
PT["Terrarium Platform Template\neg: cc-aws/cc-gcp/cc-azure"]
DEP["Dependencies\neg: pgsql, redis,\nweb-server, background-worker, static-server"]
APP["Applications\neg: backend, frontend, worker"]
TR["Terrarium CLI"]
WT["Working Terraform Template"]
ENV["Environment Variables"]
DEP --"implemented in"--> PT
DEP --"used in"--> APP
PT --"one"--> TR
APP --"many"--> TR
TR --"generates"--> WT
TR --"generates"--> ENV
flowchart TD
subgraph "Git Repos"
Farm["Terrarium Farm\nCC Owned"]
CCP["Terrarium tempaltes\nCC Owned"]
OSP["Terrarium tempaltes\nOther open source repos"]
end
subgraph "Public SaaS"
DB["Public DB"]
API
UI["T8 Web UI Interface"]
CCP --"Release pipeline"--> DB
Farm --"Release pipeline"--> DB
DB --> API
API --> UI
OSP --"link to\nbranch/tag/commit"--> UI
end
subgraph "User Local"
CLI["T8 CLI"]
VS["T8 VS Code Ext."]
GC["git clone"]
Farm --"Release pipeline"--> CLI
OSP --"link to\nbranch/tag/commit"--> GC
GC --> CLI
CLI --> VS
end
- Release VS-Code extension with basic auto-complete from curated modules in the farm-repo.
- Document the Terrarium Platform Framework and app dependencies format with examples.
- Implement CLI command to lint & parse Terrarium Platform Templates.
- Simplify the installation of Postgres & T8-API in Docker for the VS Code extension by integrating it into the CLI.
- Develop CLI command to compose working Terraform templates using T8-Platform Templates & App Dependencies.
- Enhance VS Code plugin to support auto-complete with local modules.
- Add dependency-interfaces content to the farm-repo.
- Develop CLI & VS Code plugin features to assist developers in declaring infrastructure dependencies for their apps.
- Create a UI to help developers select App Dependencies by showcasing platform and farm insights.
- Add taxonomy mappings to the farm-repo.
- Enhance VS Code plugin to automatically implement dependency-interfaces in a platform (best guess).
Join our Discord community - Terrarium Community.
Terrarium is still in its early stages, and we welcome your contributions.
To file a bug, suggest an improvement, or request a new feature please open an issue, refer to our contributing guide