既存 Azure リソースを Terraform にインポート

既存の Azure Resource Group を Terraform State にインポートし、HCL で管理を開始する実務シナリオを最小構成で体験します。

上級30Azure 実環境

ラボ概要

このラボでは、退職した同僚から引き継いだ未完成の開発環境プロジェクトを担当する開発者の想定で、すでに作成されている Resource Group を Terraform 管理下に取り込みます。実務で Terraform を導入する場合の 8 割は「既存リソースの IaC 化」であり、本ラボはその基本パターンを最短時間で体験できる設計です。

学習目標:

  • Cloud Shell で Terraform の最小構成(networking.tf 1 ファイル)を準備する
  • 既存の Resource Group を terraform import で Terraform State に取り込む
  • HCL のリソース ブロックに name / location / tags を記述して State と一致させる
  • terraform plan でドリフト(State と HCL の差分)を検出する仕組みを理解する
  • terraform apply でタグの追加・変更を Azure に反映する
  • terraform state list および terraform state show で State の管理対象を確認する
前提知識:
  • Cloud Shell および bash の基本コマンド
  • Terraform の providers / resources の概念
  • Azure CLI の基本(az group listaz account show)
完了条件:
  • Cloud Shell 上で Terraform が networking.tf の 1 ファイルで Resource Group を管理している
  • 既存 Resource Group に environment = dev タグが追加されている
  • terraform state listazurerm_resource_group.guru が State に存在する
  • terraform plan を実行しても No changes と表示される(State と Azure 側が完全に一致)

ラボの構成

  1. 1Cloud Shell とラボ環境を準備する
  2. 2providers.tf をヒアドキュメントで作成する
  3. 3networking.tf に空のリソース ブロックを作成する
  4. 4Terraform を初期化する
  5. 5既存 Resource Group の情報を取得する
  6. 6既存 Resource Group を Terraform State に取り込む
  7. 7State の中身を確認する
  8. 8networking.tf に State と一致する HCL を書き込む
  9. 9ドリフトを検出する(terraform plan)
  10. 10変更を Azure に反映する(terraform apply)
  11. 11Azure Portal でタグを確認する
  12. 12State と Azure の整合性を再確認する
  13. 13結果を考察する

詳細な手順は、ラボ開始後に画面内のガイドとして表示されます。

構成図

構成図

参考リソース