Skip to main content
CI Modules 0.53.1Last updated in version 0.52.18

Infrastructure Pipeline: Infrastructure Deployer CLI

View SourceRelease Notes

This module contains a CLI that can be used to set up a secure CI/CD pipeline for your infrastructure code (Terraform, Terragrunt, Packer, Docker, etc). This CLI can be used to in existing CI servers (e.g Jenkins, CircleCI, GitLab) to set up workflows that:

  • Run plan and apply with approval stages

  • Build docker images for every PR

  • Build VM images (e.g., AMIs) for every PR

  • Automatically update infrastructure configurations and deploying them

These workflows can be invoked on an isolated ECS task setup by the ecs-deploy-runner module.

Refer to the ecs-deploy-runner module for more information on the ECS task.


  • Run arbitrary terraform/terragrunt commands: plan, apply, etc

  • Run docker and packer image builds

  • Deploy any reference (commit sha, tag, or branch) from any git repository

  • Synchronously wait for deployments to complete before exiting

  • Stream log outputs from deployments as they happen



This repo is a part of the Gruntwork Infrastructure as Code Library, a collection of reusable, battle-tested, production ready infrastructure code. If you’ve never used the Infrastructure as Code Library before, make sure to read How to use the Gruntwork Infrastructure as Code Library!

Core concepts

  • Overview: An overview of the CLI and how to use it within CI jobs to implement an automated workflow for infrastructure code.

Repo organization

  • modules: the main implementation code for this repo, broken down into multiple standalone, orthogonal submodules.

  • examples: This folder contains working examples of how to use the submodules.

  • test: Automated tests for the modules and examples.


Non-production deployment (quick start for learning)

If you just want to try this repo out for experimenting and learning, check out the following resources:

  • examples folder: The examples folder contains sample code optimized for learning, experimenting, and testing (but not production usage).