Terrafire is a GitOps continuous delivery tool for terraform.
Create docker-compose.yml as follows:
version: "3"
services:
server:
image: "mitene/terrafire"
command: ["server"]
environment:
TERRAFIRE_PROJECT_default: "https://github.com/mitene/terrafire"
TERRAFIRE_PROJECT_default_PATH: "examples/manifest"
TERRAFIRE_PROJECT_default_BRANCH: "master"
ports:
- "8080:8080"
- "8081:8081"
controller:
image: "mitene/terrafire"
command: ["controller"]
environment:
TERRAFIRE_SCHEDULER_ADDRESS: "server:8081"
TERRAFIRE_PROJECT_default: "https://github.com/mitene/terrafire"
TERRAFIRE_PROJECT_default_PATH: "examples/manifest"
TERRAFIRE_PROJECT_default_BRANCH: "master"
Start services:
docker-compose up
Now, open http://localhost:8080
You can customize all Terrafire configurations by environment variables.
- TERRAFIRE_SERVER_PORT
Terrafire server port.
Web browser accesses to this port.
Default:
8080
- TERRAFIRE_SCHEDULER_PORT
Terrafire scheduler port.
Only terrafire controller and runner access to this port.
Default:
8081
- TERRAFIRE_DB_DRIVER
Database driver type.
Available values:
sqlite3
Default:
sqlite3
- TERRAFIRE_DB_ADDRESS
Database address.
Default:
data/sqlite3.db
- TERRAFIRE_PROJECT<project_name>
Terrafire manifest repository URL. (required)
Supported repository is GitHub only currently.
- TERRAFIRE_PROJECT<project_name>_BRANCH
Branch name of manifest repository.
Default:
master
- TERRAFIRE_PROJECT<project_name>_PATH
Relative path from manifest repository root. (optional)
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_PROTOCOL
Git credentials protocol.
Required if you have private repository.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_HOST
Git credentials host.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_USER
Git credentials user.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_PASSWORD
Git credentials password.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_SCHEDULER_ADDRESS
Terrafire scheduler address.
Default:
localhost:8081
- TERRAFIRE_CONCURRENCY
Max concurrency that terrafire runners run in parallel.
Default:
1
- TERRAFIRE_EXECUTOR_TYPE
Launch type that terrafire controller starts terrafire runners.
Available Values:
local
,ecs
Default:
local
- TERRAFIRE_EXECUTOR_ECS_CLUSTER
ECS custer name.
Effects only when executor type is
ecs
.
- TERRAFIRE_EXECUTOR_ECS_TASK_DEFINITION
ECS task definition ARN.
Required if executor type is
ecs
.
- TERRAFIRE_EXECUTOR_ECS_CONTAINER_NAME
ECS container name.
Default:
terrafire
- TERRAFIRE_EXECUTOR_ECS_CAPACITY_PROVIDER
ECS capacit¥ provider
Default:
FARGATE
- TERRAFIRE_EXECUTOR_ECS_SUBNETS
Comma separated values of subnet ids that ECS tasks use.
Required if executor type is
ecs
- TERRAFIRE_EXECUTOR_ECS_SECURITY_GROUPS
Comma separated values of security groups ids that ECS tasks use.
- TERRAFIRE_EXECUTOR_ECS_ASSIGN_PUBLIC_IP
ECS assign public IP option.
Default:
true
- TERRAFIRE_SCHEDULER_ADDRESS
Terrafire scheduler address.
Default:
localhost:8081
- TERRAFIRE_PROJECT<project_name>
Terrafire manifest repository URL. (required)
Supported repository is GitHub only currently.
- TERRAFIRE_PROJECT<project_name>_BRANCH
Branch name of manifest repository.
Default:
master
- TERRAFIRE_PROJECT<project_name>_PATH
Relative path from manifest repository root. (optional)
- TERRAFIRE_PROJECT<project_name>_ENV<var name>
Environment values applied when terraform plan/apply are executed.
- TERRAFIRE_BLOB_TYPE
Blob type.
Blob is an object storage where terraform plan results are stored.
If the blob type is
s3
, plan results are stored in local file system.Available values:
local
,s3
Default:
local
- TERRAFIRE_BLOB_LOCAL_ROOT
Root directory of local blob.
Effects only when the blob type is
local
.Default:
data/blob
- TERRAFIRE_BLOB_S3_BUCKET
S3 bucket name for s3 blob.
Required if the blob type is
s3
.
- TERRAFIRE_BLOB_S3_PREFIX
S3 prefix under which plan results are stored.
Default:
""
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_PROTOCOL
Git credentials protocol.
Required if you have private repository.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_HOST
Git credentials host.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_USER
Git credentials user.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
- TERRAFIRE_GIT_CREDENTIAL<credential_id>_PASSWORD
Git credentials password.
See https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage
See development.
This project is licensed under the MIT License - see the LICENSE file for details.