本記事では、Pythonを使用してAzureのリソースグループを作成するスクリプトを題材に、Infrastructure as Code (IaC) の基本的な考え方とそのメリットについて解説します。Azure Portal(GUI)での手動操作から、コードベースの管理へ移行する第一歩としてご活用ください。
なぜコードでリソースを管理するのか
Azure Portalでの操作は直感的ですが、手作業にはいくつかの課題が伴います。インフラ構成をコードで管理することにより、以下のようなメリットがあります。
1. 再現性が確保できる
手動での環境構築では、人的ミスや設定の差異が生じる可能性があります。コード化された構成は、誰が実行しても同じ結果を保証するため、開発、ステージング、本番といった複数環境の一貫性を維持しやすくなります。
2. 効率化と自動化
リソースの作成や削除といった定型作業をスクリプトで実行することで、作業時間を短縮できます。また、CI/CDパイプラインに組み込むことで、インフラのプロビジョニングを自動化し、デプロイプロセス全体の効率を向上させることが可能です。
3. 構成のバージョン管理
インフラ構成をコードとしてGitなどのバージョン管理システムで管理することで、変更履歴を正確に追跡できます。「いつ、誰が、何を」変更したかが明確になり、チームでのレビューを通じて構成の妥当性を検証することも容易になります。
Pythonによるリソースグループ作成の実装
以下に、リソースグループを作成するPythonスクリプトを示します。リソースグループは、関連するAzureリソースを格納するための論理的なコンテナです。
対象のコード:Python
# リソースグループの作成
import os
from azure.identity import AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
from dotenv import load_dotenv
def main():
# --- 基本設定 ---
# 環境変数から設定を読み込み
try:
load_dotenv()
subscription_id = os.getenv("AZURE_SUBSCRIPTION_ID")
if not subscription_id:
raise KeyError
except KeyError:
print("エラー: 環境変数 AZURE_SUBSCRIPTION_ID が設定されていません。")
return
resource_group_name = os.getenv("AZURE_RESOURCE_GROUP_NAME", "default-rg")
location = "japaneast"
# --- 認証とクライアントの初期化 ---
# Azure CLIの認証情報を利用
credential = AzureCliCredential()
# リソース管理クライアントの作成
resource_client = ResourceManagementClient(credential, subscription_id)
# --- リソースグループの作成 ---
print(f"'{resource_group_name}' リソースグループを作成または更新します...")
try:
rg_result = resource_client.resource_groups.create_or_update(
resource_group_name, {"location": location}
)
print(f"リソースグループ '{rg_result.name}' の準備が完了しました。")
except Exception as e:
print(f"エラーが発生しました: {e}")
if __name__ == "__main__":
main()
事前準備
スクリプトの実行の前提条件は以下の通りです。
- Python環境: Pythonがインストールされていること。
- ライブラリのインストール: ターミナルで以下のコマンドを実行します。
pip install azure-identity azure-mgmt-resource python-dotenv- Azure CLI: 公式ドキュメントを参考にインストールし、az login コマンドでサインインしておきます。
- .env ファイル: スクリプトと同じディレクトリに .env ファイルを作成し、以下の形式で情報を記述します。設定を外部ファイルに分離することで、コード内に認証情報などを直接記述することを避けられます。
#.env
#サブスクリプションID
AZURE_SUBSCRIPTION_ID = '<サブスクリプションID>'
#リソースグループ
AZURE_RESOURCE_GROUP_NAME= '<登録したいリソースグループ>'コード解説
- ライブラリのインポート
- azure.identity.AzureCliCredential: az login でサインインしたユーザーの認証情報を利用します。
- azure.mgmt.resource.ResourceManagementClient: リソースグループなどの管理操作を行うためのクライアントです。
- dotenv: .env ファイルから環境変数を読み込むために使用します。
- 基本設定 .env ファイルからサブスクリプションIDとリソースグループ名を読み込みます。これらの情報はAzure上の操作対象を特定するために不可欠です。リソースを作成する地理的な場所(リージョン)もここで定義します。
- 認証とクライアントの初期化 AzureCliCredential で取得した認証情報とサブスクリプションIDを使い、ResourceManagementClient のインスタンスを生成します。このクライアントオブジェクトを通じて、Azure Resource Manager APIを操作します。
- リソースグループの作成 resource_client.resource_groups.create_or_update メソッドが中心的な処理を担います。
- 第1引数: 作成するリソースグループの名前。
- 第2引数: リージョン(location)など、リソースのプロパティを辞書形式で指定します。
まとめ
Pythonスクリプトを用いてAzureのリソースグループを作成する手順を通じて、コードによるインフラ管理の基本的なアプローチを紹介しました。
コード化は、再現性の確保、作業の効率化、構成のバージョン管理といったメリットをもたらします。GUIでの操作に慣れた次のステップとして、このようなコードベースでのリソース管理手法を検討することは、クラウド運用の品質向上に繋がります。

コメント