Skip to content

Instantly share code, notes, and snippets.

@sandromello
Created March 1, 2019 00:36
Show Gist options
  • Save sandromello/b2199727799e42f5320ea9b95b866aa7 to your computer and use it in GitHub Desktop.
Save sandromello/b2199727799e42f5320ea9b95b866aa7 to your computer and use it in GitHub Desktop.
Terraform Inside Docker
#!/bin/bash
set -eo pipefail
: "${AWS_DEFAULT_REGION:?Need to set AWS_DEFAULT_REGION}"
: "${AWS_ACCESS_KEY_ID:?Need to set AWS_ACCESS_KEY_ID}"
: "${AWS_SECRET_ACCESS_KEY:?Need to set AWS_SECRET_ACCESS_KEY}"
TF_ACTION=$1
TF_VOLUMES="-v ${PWD}/terraform:/root -v ${PWD}/.terraform:/.terraform"
if [ "$TF_ACTION" == "apply" ]; then
ID_RSA_KEYFILE=$2
if [[ -z $ID_RSA_KEYFILE ]]; then
echo "Missing id_rsa key file path. e.g.: $0 <action> /path/to/id_rsa_keyfile"
exit 2
fi
cp $ID_RSA_KEYFILE ./terraform/.ssh/id_rsa
docker info > /dev/null && \
docker run \
-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}" \
--rm -it --name tf-hash-shop $TF_VOLUMES --entrypoint=/bin/sh hashicorp/terraform:light \
-c "ssh-agent -s > /tmp/ssh-agent && source /tmp/ssh-agent && \
ssh-add /root/.ssh/id_rsa && \
ssh-add -L && \
terraform init /root && \
terraform apply -var-file=/root/variables.tfvars -auto-approve /root"
exit 0
elif [ "$TF_ACTION" == "destroy" ]; then
docker info > /dev/null && \
docker run \
-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}" \
--rm -it --name tf-hash-shop $TF_VOLUMES --entrypoint=/bin/sh hashicorp/terraform:light \
-c "terraform destroy -var-file=/root/variables.tfvars -auto-approve /root"
exit 0
elif [ "$TF_ACTION" == "plan" ]; then
docker info > /dev/null && \
docker run \
-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}" \
--rm -it --name tf-hash-shop $TF_VOLUMES --entrypoint=/bin/sh hashicorp/terraform:light \
-c "terraform init /root && terraform plan -var-file=/root/variables.tfvars /root"
else
echo "Action not implemented \"$TF_ACTION\"! $0 apply <id_rsa_keyfile>|destroy|plan"
exit 2
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment