6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LTS Group(エル・ティー・エス グループ)Advent Calendar 2024

Day 21

TerraformとDockerを活用したAzure環境構築の効率化手法

Last updated at Posted at 2024-12-24

概要

TerraformとDockerを活用してAzure環境を効率的に構築する方法を、自身の実践例をもとに紹介します。Terraformでのインフラコード化(IaC)に加え、Dockerを使って環境を分離し、開発やテスト時の再現性を高めることを目指しました。また、Azure CLIを使った認証やリソースの初期化もセットで自動化することで、実際の運用で役立つワークフローを作っています。

使用技術

  • Terraform(Ver 1.6.6)
  • Azure CLI
  • Docker
  • Makefile

Docker ComposeによるTerraform環境の構築

Terraformの実行環境をコンテナ化し、複数の環境(例: 開発用、テスト用)をDocker Composeで管理する構成です。

docker-compose.yml
version: '3.8'
services:
  terraform:
    build: .
    volumes:
      - .:/terraform
    working_dir: /terraform
    env_file:
      - .env

Dockerfileによるカスタムイメージの作成

Terraform公式イメージをベースに、Azure CLIと必要なパッケージを追加インストールしたDockerfileを使用しました。

FROM hashicorp/terraform:1.6.6

RUN apk add --no-cache curl unzip bash python3 py3-pip gcc python3-dev musl-dev linux-headers make jq
RUN python3 -m venv /azure-cli-venv
ENV PATH="/azure-cli-venv/bin:$PATH"

RUN pip install azure-cli
WORKDIR /terraform
COPY . /terraform

このカスタムイメージにより、Terraform操作とAzure CLIを1つのコンテナ環境で統合的に利用可能にしました。

Azure CLIとTerraformの連携

login.shでの認証プロセス
このスクリプトでは、サービスプリンシパルを使用したAzure CLIでの認証を行います。認証情報を環境変数で管理していますが、Azure Key Vaultのシークレット管理ツールを使用することで、さらなるセキュリティ強化が可能です。

login.sh
az login --service-principal --username ${CLIENT_ID} --password ${CLIENT_SECRET} --tenant ${TENANT_ID}
az account set --subscription ${SUBSCRIPTION_ID}

Makefileを用いた運用の効率化

Terraformの操作をシンプル化するため、Makefileを導入しました。

apply:
	docker-compose run --rm --entrypoint "/bin/bash" terraform -c "sh login.sh; terraform fmt; terraform init; terraform apply"

コマンドの流れ:

1 login.shの実行: Azure CLIを用いた認証。
2 Terraformコマンドの実行:
・terraform fmt: コードフォーマットのチェック。
・terraform init: 必要なプロバイダーやモジュールの初期化。
・terraform apply: Azureリソースの作成。

これにより、make applyを実行するだけで、認証とTerraformの処理を一括して行えます。

終わりに

本記事では、TerraformとDockerを活用してAzure環境を効率化する手法を解説しました。Dockerで環境を分離し、TerraformとAzure CLIを組み合わせて自動化することで、作業の再現性を高めました。
今後は、CI/CDパイプラインの導入を検討し、さらに効率的で安全な運用を目指していきたいと思います。

6
1
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
6
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?