Skip to content
This repository has been archived by the owner on Jul 12, 2023. It is now read-only.

mitene/terrafire

Repository files navigation

Terrafire

Terrafire is a GitOps continuous delivery tool for terraform.

Getting Started

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

Configuration

You can customize all Terrafire configurations by environment variables.

server config

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

controller config

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

runner config

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

Development

See development.

License

This project is licensed under the MIT License - see the LICENSE file for details.