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.