0
0

ローカルの状態によって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

まとめ

この手法をメンバー間で
統一することで特定の実行環境のみに
発生するといった事象の可能性を低くすることが
できると考えています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0