TerraformとDooD環境にAWS CLIを使用できるコンテナは、以下の記事で紹介しました。
【Docker】Terraform+AWS CLI+DooD環境を構築
今回はそれを応用して、Azure CLIを使用できるコンテナを作成しようと思います。
また、コンテナのベースイメージはAlpine Linuxですので、Dockerfileに記載するコマンドは、Azure CLIをAlpine Linuxにインストールしたい方にも参考になると思います。
ターゲット
- Azure CLI環境をコンテナ化したい
- Alpine LinuxにAzure CLIをインストールしたい
Azure CLIを使う方法
公式イメージを使う
Azure CLIのみを使用したい場合は、公式ドキュメントのDocker コンテナーで Azure CLI を実行する方法の手順で、公式イメージのmcr.microsoft.com/azure-cli
を使用するのが一番簡単です。
docker run -it mcr.microsoft.com/azure-cli
ホスト環境のSSHキーを使う場合は、マウントします。
環境変数HOMEが.ssh
ディレクトリのパスの想定です。
docker run -it -v ${HOME}/.ssh:/root/.ssh mcr.microsoft.com/azure-cli
Alpine Linuxにインストールして使う
今回はベースイメージとして後述するTerraformの公式イメージを使います。Terraformの公式イメージはAlpine Linuxですので、その場合は以下のように作成します。
FROM alpine:latest
# install Azure CLI
RUN apk add py3-pip && \
apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo make && \
pip install --upgrade pip && \
pip install azure-cli
環境変数HOMEに.ssh
があるフォルダパスを設定します。
set HOME=C:/Users/<username>
コンテナイメージをビルドして、実行します。
docker build -t azure-cli/alpine .
docker run -it -v ${HOME}/.ssh:/root/.ssh azure-cli/alpine
Terraform+Azure CLI+DooDをする
必要ファイルの準備
└─tf-azurecli
.env
docker-compose.yml
Dockerfile
Terraformが使用できる公式イメージ(OSはAlpine Linux)をベースに、Docker CLIとAzure CLIをインストールします。
Dockerfileを作成するとこのようになります。
FROM hashicorp/terraform:latest
# install Docker CLI
RUN apk update && \
apk add --no-cache docker-cli && \
apk add --no-cache docker-compose
# install Azure CLI
RUN apk add py3-pip && \
apk add gcc musl-dev python3-dev libffi-dev openssl-dev cargo make && \
pip install --upgrade pip && \
pip install azure-cli
.ssh
をマウントする設定をdocker-compose.yml
にまとめます。
また、DooDのためにvolumes
で/var/run/docker.sock
をマウントします。
version: '3'
services:
tf-azurecli:
container_name: tf-azurecli
build: .
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ${HOME}/.ssh:/root/.ssh
entrypoint: ash
tty: true
また、.ssh
をマウントするときに使用する環境変数を.env
で設定します。
例) Windowsユーザー場合
HOME=C:/Users/<username>
使ってみる
コンテナを立ち上げてみましょう。
docker-compose build --no-cache
docker-compose up -d
docker-compose exec tf-azurecli /bin/ash
execで中に入れたら、各ツールが使えるか確かめましょう。
例としてバージョンを確認してみます。
terraform -v
Terraform v1.2.1
on linux_amd64
docker -v
Docker version 20.10.16, build aa7e414fdcb23a66e8fabbef0a560ef1769eace5
az -v
azure-cli 2.37.0
・・・中略・・・
and let us know if you're interested in trying out our newest features: https://aka.ms/CLIUXstudy
さいごに
前回のAWS CLIに続いて、TerraformとAzure CLI環境をコンテナ化してみました。
コンテナに慣れてしまうと、依存関係で悩まされることが少なくなるのがいいですね。
参考
Install Azure CLI on Alpine Linux #19591
【Docker】Terraform+AWS CLI+DooD環境を構築