Closed3

terraformの公式Docker imageでAWS CLIを使うときの注意点

jimatomojimatomo

今時点の結論

hashicorpが提供するterraformがビルドされている公式イメージは軽量で有名なAlpineをベースにしているので、どうもAWS CLI v2と相性が悪いらしい。

なので、普通にapkでpy-pipを入れて、pipでawscliをインストールする方が安定します。(つまり、AWS CLI v1を使う)

※後述しますが、AWS CLI v2が使うglicとの相性が悪いからというのが原因のようです。
ワークアラウンドでいろいろできるみたいですが、どうもDockerをビルドしてもうまく動かなかったです(ただ、いろいろ試行錯誤しすぎたせいでバグってしまっただけかもしれない)。

普通にこんな感じでやるのがいいでしょう。バージョンをいじればterraformの最新バージョンでも動作しました。
https://github.com/giuliocalzolari/terraform-awscli

Dockerfile(最新のterraformのイメージを使う場合)
FROM hashicorp/terraform:latest

RUN apk add --no-cache \
        bash \
        py-pip \
	jq \
 && pip install --upgrade \
        pip \
        awscli

ENTRYPOINT ["/bin/bash"]

※公式TerraformのDocker ImageはENTRYPONTがterraformになっているので、お好みでbashに変更できます。※bashはterraformのビルド時に入っているので追加インストールは不要です。

Alpineとglibcの相性の悪さ

ちなみにGitHub上でissueが上がっているので見てみてください。
https://github.com/sgerrand/alpine-pkg-glibc/issues/185

【参考】
https://dev.classmethod.jp/articles/docker-alpine-glibc-error/

こちらで無理やり消し去るという方法もあるようです。こっちは試していないです。
https://go-to-k.hatenablog.com/entry/2021/08/08/012204

どうしてもAWS CLI v2を使う必要がある場合は別のディストリビューションのDocker Imageを使った方がいいかもですね。

jimatomojimatomo

軽量のAlpineで使わなければAWS CLI v2を使えるのでは?と思って、手なじみのいいubuntuでTerraformの環境を作ってみた方法もおいておきます。

Dockerfile
FROM ubuntu:22.04

WORKDIR /tmp

# 共通利用のパッケージのインストール
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y less vim curl unzip git

# aws cli v2 のインストール
# https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/install-cliv2-linux.html
RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
RUN unzip awscliv2.zip
RUN ./aws/install
RUN rm awscliv2.zip

# terraformのインストール(バイナリを落としてきてパスの通っているところに解凍する方法)
ENV TF_VERSION=1.3.7
RUN curl "https://releases.hashicorp.com/terraform/${TF_VERSION}/terraform_${TF_VERSION}_linux_amd64.zip" -o "terraform.zip"
RUN unzip -d /usr/local/bin/ terraform.zip
RUN rm terraform.zip

まだ、22.04のリポジトリにterraformが登録されていないようなので、curlでとってきてunzipしました。
https://github.com/hashicorp/terraform/issues/31826

このスクラップは2023/03/05にクローズされました