Open source tool to handle remote terraform workspace in organizations and handle all the lifecycle (plan, apply, destroy).
The server defines a rest API based on Yahoo Elide and expose a JSON:API or GraphQL.
Component descriptions:
- Terrakube API:
Expose a JSON:API or GraphQL API providing endpoints to handle:
- Organizations.
- Workspaces
- Jobs.
- Modules
- Providers
- Terrakube Executor:
- Service that executes the terraform operations, updates the status using the Terrakube API and save the results using different cloud storage providers.
- Terrakube Registry:
- Open Source terraform registry with support for the module and provider protocol.
- Cloud Storage:
- Cloud storage to save terraform state and terraform outputs.
- RDBMS:
- The platform can be used with any database supported by the Liquibase project.
- Security:
- To handle authentication the platform uses Azure Active Directory.
- Terrakube CLI:
- Go based CLI that can communicate with the Terrakube API and execute operation for organizations, workspaces, jobs, modules or providers
- Terrakube UI:
- React based frontend to handle all Terrakube Operations.
For more information please visit our documentation.
The platform support public and private repositories in the following providers:
- GitHub.com
- Bitbucket.com
- Gitlab.com
- Azure DevOps
To compile and run the tool you will need the following:
- Java 11
- Maven
mvn clean install
This project contains two modules describe below:
Name | Description |
---|---|
api | Expose the API to manage all terraform workspaces |
api-registry | Open source terraform registry compatible with the terrakube API |
By default, Azure Active Directory protects the API authentication. To better understand Azure Active directory authentication please refer to these links:
To run the api you need the following environment variables:
Name | Description |
---|---|
SQL Azure | Supported |
PostgreSQL | Supported |
MySQL | In testing |
MariaDB | Pending |
Oracle | Pending |
Please check the docker compose repository:
git clone https://github.com/AzBuilder/terrakube-docker-compose.git
cd local
docker-compose up
To build the docker images for the server and server job execute the following command:
mvn spring-boot:build-image
The server supports the following endpoints:
- Organization
- Teams
- Modules
- Providers
- Templates
- Workspace
- Jobs
- Schedule
- History
For more information please refer to the API documentation
For more detail information about how to use azb-server json:api please check the following files: