terrafire

module
v0.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 18, 2020 License: MIT

README

#########
Terrafire
#########

Terrafire is a GitOps continuous delivery tool for terraform.

***************
Getting Started
***************

Create docker-compose.yml as follows:

.. code-block:: yaml

    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:

.. code-block::

    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 <docs/development.rst>`_.

*******
License
*******

This project is licensed under the MIT License - see the `LICENSE <LICENSE>`_ file for details.

Directories

Path Synopsis
cmd
api

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL