ローカルの状態によってCDKTFの実行結果が異なる事象が発生
CDKTFの実行環境をコンテナ化することで、
ローカルの状態によって実行結果が異なる事象を解消します。
Dockerfileの作成
# Use an official Node.js runtime as a parent image
FROM node:22
# Set the working directory in the container to /app
WORKDIR /app
# Install CDK for Terraform globally
RUN npm install --global cdktf-cli
# AWS CLIのインストール
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm -rf awscliv2.zip
# Terraformインストール (執筆時点での最新版を導入してます。バージョン一覧 => https://releases.hashicorp.com/terraform/)
ENV TERRAFORM_VERSION=1.9.1
RUN wget https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_arm64.zip && \
unzip ./terraform_${TERRAFORM_VERSION}_linux_arm64.zip -d /usr/local/bin/ && \
rm ./terraform_${TERRAFORM_VERSION}_linux_arm64.zip
# Run the application when the container launches
CMD ["cdktf", "--version"]
ついでにAWS CLIもインストールしています。
Docker Build
docker build -t cdktf-docker .
- 確認
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
cdktf-docker latest 52d950bc0028 48 seconds ago 2.35GB
実行方法
- CDKTF のバージョン確認
docker run -it --rm -v ./:/app \
-v ~/.aws:/root/.aws \
-v ~/.terraform.d:/root/.terraform.d \
-w /app \
cdktf-docker:latest \
cdktf --version
- Terraformのバージョン確認
docker run -it --rm -v ./:/app \
-v ~/.aws:/root/.aws \
-v ~/.terraform.d:/root/.terraform.d \
-w /app \
cdktf-docker:latest \
terraform --version
- aws cliのバージョン確認
docker run -it --rm -v ./:/app \
-v ~/.aws:/root/.aws \
-v ~/.terraform.d:/root/.terraform.d \
-w /app \
cdktf-docker:latest \
aws --version
まとめ
この手法をメンバー間で
統一することで特定の実行環境のみに
発生するといった事象の可能性を低くすることが
できると考えています。