LoginSignup
2
0

More than 1 year has passed since last update.

【Docker】Terraform+Azure CLI+DooD環境を構築

Posted at

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ですので、その場合は以下のように作成します。

Dockerfile
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があるフォルダパスを設定します。

例 | Windowsの場合
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を作成するとこのようになります。

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をマウントします。

docker-compose.yml
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ユーザー場合

.env
HOME=C:/Users/<username>

使ってみる

コンテナを立ち上げてみましょう。

docker-compose build --no-cache
docker-compose up -d
docker-compose exec tf-azurecli /bin/ash

execで中に入れたら、各ツールが使えるか確かめましょう。
例としてバージョンを確認してみます。

Terraformバージョン確認
terraform -v
Terraform v1.2.1
on linux_amd64
Dockerバージョン確認
docker -v
Docker version 20.10.16, build aa7e414fdcb23a66e8fabbef0a560ef1769eace5
AWSCLIバージョン確認
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環境を構築

2
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
2
0