|
ARG atlantis_version=v0.15.0 |
|
|
|
FROM runatlantis/atlantis:${atlantis_version} |
|
|
|
LABEL maintainer="Beat DevOps Team" |
|
LABEL description="thebeat.co atlantis image used in IaC CI/CD!" |
|
LABEL version="0.2" |
|
|
|
# https://github.com/gruntwork-io/terragrunt/releases |
|
ARG terragrunt_version=v0.25.1 |
|
ARG terragrunt_sha256sum=533f43ece374476efc8bbe4eea9395892dfcd9e4f1ae033cdd6855c227632f31 |
|
ARG terragrunt_uri=https://github.com/gruntwork-io/terragrunt/releases/download/${terragrunt_version}/terragrunt_linux_amd64 |
|
|
|
|
|
# Custom fork of https://github.com/transcend-io/terragrunt-atlantis-config for linux_amd64 binary |
|
ARG terragrunt_atlantis_config_version=0.8.0 |
|
ARG terragrunt_atlantis_config_sha256sum=3b146cdba021410a5f6de836c29da9546c3424cd55c060722fed5a724a01236b |
|
# This is a fork of the original project because it doesn't support Linux AMD64 Binary yet. It will be changed as soon as the repo supports it. |
|
ARG terragrunt_atlantis_config_uri=https://github.com/angeloskaltsikis/terragrunt-atlantis-config/releases/download/v${terragrunt_atlantis_config_version}/terragrunt-atlantis-config_${terragrunt_atlantis_config_version}_linux_amd64.tar.gz |
|
|
|
# https://releases.hashicorp.com/terraform-provider-aws |
|
ARG terraform_provider_aws_version=3.8.0 |
|
ARG terraform_provider_aws_sha256sum=d931d23ad961616f1ad437b48cb4ad147b3b68fedf8d1b541ab6c5e49eacb32c |
|
ARG terraform_provider_aws_uri=https://releases.hashicorp.com/terraform-provider-aws/${terraform_provider_aws_version}/terraform-provider-aws_${terraform_provider_aws_version}_linux_amd64.zip |
|
|
|
# https://releases.hashicorp.com/terraform-provider-github |
|
ARG terraform_provider_github_version=2.9.1 |
|
ARG terraform_provider_github_sha256sum=f9f4ee5444d58ed94f608ed580feccded225a6e26899f016b1013a388dc3cce5 |
|
ARG terraform_provider_github_uri=https://releases.hashicorp.com/terraform-provider-github/${terraform_provider_github_version}/terraform-provider-github_${terraform_provider_github_version}_linux_amd64.zip |
|
|
|
# https://github.com/Mongey/terraform-provider-kafka |
|
ARG terraform_provider_kafka_version=0.2.10 |
|
ARG terraform_provider_kafka_sha256sum=8faa5fca58cc8c73a604e097dc8d205d521141db0db25747b874e4d65a1680db |
|
ARG terraform_provider_kafka_uri=https://github.com/Mongey/terraform-provider-kafka/releases/download/v${terraform_provider_kafka_version}/terraform-provider-kafka_${terraform_provider_kafka_version}_linux_amd64.zip |
|
|
|
# https://releases.hashicorp.com/terraform-provider-random |
|
ARG terraform_provider_random_version=2.2.1 |
|
ARG terraform_provider_random_sha256sum=7fa7737661380d18cba3cdc71c4ec6f2fd281b9d61112f6b48d06ca8bbf97771 |
|
ARG terraform_provider_random_uri=https://releases.hashicorp.com/terraform-provider-random/${terraform_provider_random_version}/terraform-provider-random_${terraform_provider_random_version}_linux_amd64.zip |
|
|
|
# Downloads multiple custom dependencies we have for our Atlantis Installation |
|
RUN AVAILABLE_TERRAFORM_VERSIONS="0.12.26 0.12.28 0.13.2" && \ |
|
# Fetch all Terraform Versions described in the AVAILABLE_TERRAFORM_VERSIONS |
|
for VERSION in ${AVAILABLE_TERRAFORM_VERSIONS}; do \ |
|
curl -LOs https://releases.hashicorp.com/terraform/${VERSION}/terraform_${VERSION}_linux_amd64.zip && \ |
|
curl -LOs https://releases.hashicorp.com/terraform/${VERSION}/terraform_${VERSION}_SHA256SUMS && \ |
|
sed -n "/terraform_${VERSION}_linux_amd64.zip/p" terraform_${VERSION}_SHA256SUMS | sha256sum -c && \ |
|
mkdir -p /usr/local/bin/tf/versions/${VERSION} && \ |
|
unzip terraform_${VERSION}_linux_amd64.zip -d /usr/local/bin/tf/versions/${VERSION} && \ |
|
ln -s /usr/local/bin/tf/versions/${VERSION}/terraform /usr/local/bin/terraform${VERSION} && \ |
|
rm terraform_${VERSION}_linux_amd64.zip && \ |
|
rm terraform_${VERSION}_SHA256SUMS; \ |
|
done && \ |
|
# Fetch Terragrunt |
|
wget --directory-prefix=/tmp ${terragrunt_uri} && \ |
|
echo "${terragrunt_sha256sum} /tmp/terragrunt_linux_amd64" | sha256sum -c - && \ |
|
cp /tmp/terragrunt_linux_amd64 /usr/local/bin/terragrunt && \ |
|
chmod +x /usr/local/bin/terragrunt && \ |
|
rm /tmp/terragrunt_linux_amd64 && \ |
|
# Fetch Terragrunt NodeJS Wrapper Dependencies |
|
apk add --update nodejs npm && \ |
|
npm install shelljs path && \ |
|
# Fetch Terragrunt Atlantis Config Generator |
|
wget --directory-prefix=/tmp ${terragrunt_atlantis_config_uri} && \ |
|
echo "${terragrunt_atlantis_config_sha256sum} /tmp/terragrunt-atlantis-config_${terragrunt_atlantis_config_version}_linux_amd64.tar.gz" | sha256sum -c - && \ |
|
cd /tmp && tar -zxvf terragrunt-atlantis-config_${terragrunt_atlantis_config_version}_linux_amd64.tar.gz && \ |
|
cp /tmp/terragrunt-atlantis-config_${terragrunt_atlantis_config_version}_linux_amd64/terragrunt-atlantis-config_${terragrunt_atlantis_config_version}_linux_amd64 /usr/local/bin/terragrunt-atlantis-config && \ |
|
chmod +x /usr/local/bin/terragrunt-atlantis-config && \ |
|
# Terraform Providers |
|
mkdir -p /home/atlantis/terraform-providers && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/ && \ |
|
# Fetch Terraform AWS Provider (Both for TF 0.12 & TF 0.13) |
|
wget --directory-prefix=/tmp ${terraform_provider_aws_uri} && \ |
|
echo "$terraform_provider_aws_sha256sum terraform-provider-aws_${terraform_provider_aws_version}_linux_amd64.zip" | sha256sum -c - && \ |
|
cd /tmp && unzip terraform-provider-aws_${terraform_provider_aws_version}_linux_amd64.zip && \ |
|
chmod +x terraform-provider-aws_v${terraform_provider_aws_version}_x5 && \ |
|
cp terraform-provider-aws_v${terraform_provider_aws_version}_x5 /home/atlantis/terraform-providers && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-aws_v${terraform_provider_aws_version}_x5 /home/atlantis/.terraform.d/plugins/terraform-provider-aws && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/hashicorp/aws/${terraform_provider_aws_version}/linux_amd64/ && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/aws/${terraform_provider_aws_version}/linux_amd64/ && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-aws_v${terraform_provider_aws_version}_x5 /home/atlantis/.terraform.d/plugins/registry.terraform.io/hashicorp/aws/${terraform_provider_aws_version}/linux_amd64/terraform-provider-aws_v${terraform_provider_aws_version} && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-aws_v${terraform_provider_aws_version}_x5 /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/aws/${terraform_provider_aws_version}/linux_amd64/terraform-provider-aws_v${terraform_provider_aws_version} && \ |
|
# Fetch Terraform Github Provider (Both for TF 0.12 & TF 0.13) |
|
wget --directory-prefix=/tmp ${terraform_provider_github_uri} && \ |
|
echo "$terraform_provider_github_sha256sum terraform-provider-github_${terraform_provider_github_version}_linux_amd64.zip" | sha256sum -c - && \ |
|
cd /tmp && unzip terraform-provider-github_${terraform_provider_github_version}_linux_amd64.zip && \ |
|
chmod +x terraform-provider-github_v${terraform_provider_github_version}_x4 && \ |
|
cp terraform-provider-github_v${terraform_provider_github_version}_x4 /home/atlantis/terraform-providers && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-github_v${terraform_provider_github_version}_x4 /home/atlantis/.terraform.d/plugins/terraform-provider-github && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/hashicorp/google/${terraform_provider_github_version}/linux_amd64/ && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/google/${terraform_provider_github_version}/linux_amd64/ && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-github_v${terraform_provider_github_version}_x4 /home/atlantis/.terraform.d/plugins/registry.terraform.io/hashicorp/google/${terraform_provider_github_version}/linux_amd64/terraform-provider-github_v${terraform_provider_github_version} && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-github_v${terraform_provider_github_version}_x4 /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/google/${terraform_provider_github_version}/linux_amd64/terraform-provider-github_v${terraform_provider_github_version} && \ |
|
# Fetch Terraform Kafka Provider (Both for TF 0.12 & TF 0.13) |
|
wget --directory-prefix=/tmp ${terraform_provider_kafka_uri} && \ |
|
echo "$terraform_provider_kafka_sha256sum terraform-provider-kafka_${terraform_provider_kafka_version}_linux_amd64.zip" | sha256sum -c - && \ |
|
cd /tmp && unzip terraform-provider-kafka_${terraform_provider_kafka_version}_linux_amd64.zip && \ |
|
chmod +x terraform-provider-kafka_v${terraform_provider_kafka_version} && \ |
|
cp terraform-provider-kafka_v${terraform_provider_kafka_version} /home/atlantis/terraform-providers && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-kafka_v${terraform_provider_kafka_version} /home/atlantis/.terraform.d/plugins/terraform-provider-kafka && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/Mongey/kafka/${terraform_provider_kafka_version}/linux_amd64/ && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/kafka/${terraform_provider_kafka_version}/linux_amd64/ && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-kafka_v${terraform_provider_kafka_version} /home/atlantis/.terraform.d/plugins/registry.terraform.io/Mongey/kafka/${terraform_provider_kafka_version}/linux_amd64/terraform-provider-kafka_v${terraform_provider_kafka_version} && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-kafka_v${terraform_provider_kafka_version} /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/kafka/${terraform_provider_kafka_version}/linux_amd64/terraform-provider-kafka_v${terraform_provider_kafka_version} && \ |
|
# Fetch Terraform Random Provider (Both for TF 0.12 & TF 0.13) |
|
wget --directory-prefix=/tmp ${terraform_provider_random_uri} && \ |
|
echo "$terraform_provider_random_sha256sum terraform-provider-random_${terraform_provider_random_version}_linux_amd64.zip" | sha256sum -c - && \ |
|
cd /tmp && unzip terraform-provider-random_${terraform_provider_random_version}_linux_amd64.zip && \ |
|
chmod +x terraform-provider-random_v${terraform_provider_random_version}_x4 && \ |
|
cp terraform-provider-random_v${terraform_provider_random_version}_x4 /home/atlantis/terraform-providers && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-random_v${terraform_provider_random_version}_x4 /home/atlantis/.terraform.d/plugins/terraform-provider-random && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/hashicorp/random/${terraform_provider_random_version}/linux_amd64/ && \ |
|
mkdir -p /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/random/${terraform_provider_random_version}/linux_amd64/ && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-random_v${terraform_provider_random_version}_x4 /home/atlantis/.terraform.d/plugins/registry.terraform.io/hashicorp/random/${terraform_provider_random_version}/linux_amd64/terraform-provider-random_v${terraform_provider_random_version} && \ |
|
ln -s /home/atlantis/terraform-providers/terraform-provider-random_v${terraform_provider_random_version}_x4 /home/atlantis/.terraform.d/plugins/registry.terraform.io/-/random/${terraform_provider_random_version}/linux_amd64/terraform-provider-random_v${terraform_provider_random_version} && \ |
|
# Delete all the /tmp folder to make sure it deletes all downloads |
|
rm -rf /tmp/* |
|
|
|
# Based on https://gist.github.com/dmattia/0d17696bad1dffd90ec7c899e0343955 for less verbose terragrunt output from . Our version is a more extended one. |
|
COPY terragrunt_light.js /home/atlantis/terragrunt_light.js |
|
|
|
# Wrapper Script which tries to run git hooks if the repo cloned to atlantis include some in a certain directory. |
|
COPY post-checkout.sh /home/atlantis/hooks/post-checkout |
Any luck @evanstoddard23 ?
Please let me know so I can update both the Gist & the blogpost to include that.
TIA