diff --git a/oci/iac-runner/terraform-aws/Dockerfile b/oci/iac-runner/terraform-aws/Dockerfile index 0679419..c05e043 100644 --- a/oci/iac-runner/terraform-aws/Dockerfile +++ b/oci/iac-runner/terraform-aws/Dockerfile @@ -1,29 +1,32 @@ -FROM artifact.onwalk.net/public/terraform:latest as builder - -# Build IAC Runner -FROM artifact.onwalk.net/public/alpine-awscli-python3:latest as release +FROM artifact.onwalk.net/devops/eksctl:latest as eksctl +FROM artifact.onwalk.net/devops/terraform:latest as terraform +FROM artifact.onwalk.net/devops/terragrunt:latest as terragrunt +FROM artifact.onwalk.net/base/alpine-awscli-python3:latest as prod ENV KUBECTL_VERSION=1.19.3 +ENV HELMCTL_VERSION=3.11.1 +ENV HELMCTL_BASE_URL="https://get.helm.sh" -COPY --from=builder /bin/terraform /bin/ +COPY --from=eksctl /usr/local/bin/eksctl /bin/ +COPY --from=terraform /bin/terraform /bin/ +COPY --from=terragrunt /usr/local/bin/terragrunt /bin/ + +# install helm in apline +RUN case `uname -m` in \ + x86_64) ARCH=amd64; ;; \ + aarch64) ARCH=arm64; ;; \ + loongarch64) ARCH=loongarch64; ;; \ + *) echo "un-supported arch, exit ..."; exit 1; ;; \ + esac && wget ${HELMCTL_BASE_URL}/helm-v${HELMCTL_VERSION}-linux-${ARCH}.tar.gz -O - | tar -xz && mv linux-${ARCH}/helm /usr/bin/helm && chmod +x /usr/bin/helm && rm -rf linux-${ARCH} && chmod 755 /usr//bin/helm # install kubectl in apline RUN wget -O /usr/local/bin/kubectl https://storage.googleapis.com/kubernetes-release/release/v${KUBECTL_VERSION}/bin/linux/amd64/kubectl && chmod +x /usr/local/bin/kubectl # make terraform plugin cache -COPY provider-cache.tf /tmp/provider-cache.tf -RUN mkdir -pv $HOME/.terraform.d/plugins && \ - cd /tmp && terraform init && \ - mv .terraform/providers/* $HOME/.terraform.d/plugins && \ - rm -rf .terraform && rm -rf provider-cache.tf -# config terraform cli -# ENV TF_CLI_ARGS_init="-plugin-dir=$HOME/.terraform.d/plugins" - -# install python3 -# RUN apk --no-cache add python3 py3-pip - -# packages for eks-environment/kubernetes/addon.sh -RUN pip install --upgrade pip --user && \ - pip install pyyaml +ADD provider.tf /tmp/provider-cache.tf +RUN mkdir -p $HOME/.terraform.d/plugins && mkdir -pv /data/terraform/ && \ + cd /tmp && terraform init && mv .terraform/providers/* $HOME/.terraform.d/plugins && terraform providers mirror /data/terraform/ && \ + rm -rf .terraform && rm -rf provider-cache.tf .terraform.lock.hcl +COPY .terraformrc /root/ ENTRYPOINT ["/bin/sh", "-c"] diff --git a/oci/iac-runner/terraform-aws/provider-cache.tf b/oci/iac-runner/terraform-aws/provider.tf similarity index 50% rename from oci/iac-runner/terraform-aws/provider-cache.tf rename to oci/iac-runner/terraform-aws/provider.tf index 82ce734..0306de4 100644 --- a/oci/iac-runner/terraform-aws/provider-cache.tf +++ b/oci/iac-runner/terraform-aws/provider.tf @@ -1,18 +1,31 @@ provider "aws" {} provider "tls" {} provider "null" {} +provider "helm" {} provider "template" {} +provider "kubernetes" {} +provider "kubectl" {} terraform { required_providers { - local = { - source = "hashicorp/local" - } aws = { source = "hashicorp/aws" } tls = { source = "hashicorp/tls" } + helm = { + source = "hashicorp/helm" + } + local = { + source = "hashicorp/local" + } + kubectl = { + source = "gavinbunney/kubectl" + version = ">= 1.7.0" + } + kubernetes = { + source = "hashicorp/kubernetes" + } } }