/terraform-aws-cli

Minimal & lightweight docker image including AWS and Terraform CLI

Primary LanguageRoffApache License 2.0Apache-2.0

lint-dockerfile build-test push-latest release

dockerhub-description-update License Docker Pulls

Terraform and AWS CLI Docker image

📦 Supported tags and respective Dockerfile links

Available image tags can be found on the Docker Hub registry: zenika/terraform-aws-cli

Supported versions are listed in the supported_versions.json file.

The following image tag strategy is applied:

  • zenika/terraform-aws-cli:latest - build from master
  • zenika/terraform-aws-cli:release-S.T_terraform-UU.VV.WW_awscli-XX.YY.ZZ - build from releases
    • release-S.T is the release tag
    • terraform-UU.VV.WWW is the Terraform version included in the image
    • awscli-XX.YY.ZZ is the AWS CLI version included in the image

Please report to the releases page for the changelogs.

Any other tags are not supported even if available.

💡 Motivation

The goal is to create a minimalist and lightweight image with these tools in order to reduce network and storage impact.

This image gives you the flexibility to be used for development or as a base image as you see fits.

🔧 What's inside ?

Tools included:

  • Terraform CLI
  • AWS CLI
  • Git for Terraform remote module usage
  • jq to process JSON returned by AWS
  • OpenSSH Client to handle Terraform module clone over SSH
  • This image uses a non-root user with a UID and GID of 1001 to conform with docker security best practices.

🚀 Usage

🐚 Launch the CLI

Set your AWS credentials (optional) and use the CLI as you would on any other platform, for instance using the latest image:

echo AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY
echo AWS_SECRET_ACCESS_KEY=YOUR_SECRET_KEY
echo AWS_DEFAULT_REGION=YOUR_DEFAULT_REGION

docker container run -it --rm -e "AWS_ACCESS_KEY_ID=${AWS_ACCESS_KEY_ID}" -e "AWS_SECRET_ACCESS_KEY=${AWS_SECRET_ACCESS_KEY}" -e "AWS_DEFAULT_REGION=${AWS_DEFAULT_REGION}" -v ${PWD}:/workspace zenika/terraform-aws-cli:latest

The --rm flag will completely destroy the container and its data on exit.

⚙️ Build the image

The image can be built locally directly from the Dockerfiles, using the build script.

It will :

# launch build script
./dev.sh

Optionally, it is possible to choose the tools desired versions :

# Set tools desired versions
AWS_CLI_VERSION=2.12.6
TERRAFORM_VERSION=1.5.2

# launch the build script with parameters
./dev.sh $AWS_CLI_VERSION $TERRAFORM_VERSION

🙏 Contributions

Do not hesitate to contribute by filling an issue or a PR !

📚 Documentations

🚩 Similar repositories

📖 License

This project is under the Apache License 2.0

with love by zenika