Skip to content
Dojo image supporting terraform operations
Shell Dockerfile HCL
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Dojo docker image with Terraform and supporting tools installed. Based on alpine docker image.

Tested and released images are published to dockerhub as kudulab/terraform-dojo


  1. Setup docker.
  2. Install Dojo binary.
  3. Provide a Dojofile:
  1. Create and enter the container by running dojo at the root of project.
  2. Work with terraform as usual:
terraform --version
terraform init
terraform plan

By default, current directory in docker container is /dojo/work.


  • base image is alpine, to make this image as small as possible
  • terraform binary on the PATH
  • terraform plugins: consul, openstack, aws, null, external, local, template.
  • jq to parse JSON from bash scripts
  • dot to generate infrastructure graphs from terraform
  • a minimal ssh and git setup - to clone terraform modules


Those files are used inside the docker image:

  1. ~/.ssh/ -- is copied from host to dojo's home ~/.ssh
  2. ~/.ssh/config -- will be generated on docker container start. SSH client is configured to ignore known ssh hosts.
  3. ~/.gitconfig -- if exists locally, will be copied
  4. ~/.profile -- will be generated on docker container start, in order to ensure current directory is /dojo/work.
  5. For openstack access - environment variables must be locally set: [ 'OS_AUTH_URL', 'OS_TENANT_NAME', 'OS_USERNAME', 'OS_PASSWORD']. Dojo will pass them to the docker image.
  6. For AWS access AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY must be set.

To enable debug output:



Why not just use official terraform image?

So that packer-dojo and terraform-dojo are similar and thus easier to maintain.


  • Bash
  • Docker daemon
  • Dojo

Full spec is ops-base


  1. In a feature branch:
  • you make changes
  • and run tests:
    • ./tasks build
    • ./tasks itest
  1. You decide that your changes are ready and you:
  • merge into master branch
  • run locally:
    • ./tasks set_version to set version in CHANGELOG, bump patch version
    • e.g. ./tasks set_version 1.2.3 to set version in CHANGELOG to 1.2.3
  • push to master onto private git server
  1. CI server (GoCD) tests and releases.


Copyright 2019 Ewa Czechowska, Tomasz Sętkowski

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

You can’t perform that action at this time.