MS_CloudInfraAutomation - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

クラウド・インフラ自動化

概要

  • IaC とも呼ばれる。
  • 自動化ツールが数多くリリースされている。
  • クラウド活用が進み、今後、更に重要度を増していくものと思われる。

IaC

IaC (Infrastructure as Code)

冪等性

クラウド・インフラ自動化ツールは、構成管理において厄介な

「何度実行されても同じ状態に収束する」

普遍(冪等)性をツール側が保証するようになっている。

補足(宣言的と手続き的): 冪等性が自然に得られるかどうかは、
ツールの記述スタイルで決まる。

スタイル 記述内容
宣言的(declarative) あるべき状態を書く ARM / Bicep、Terraform、PowerShell DSC、Kubernetes マニフェスト
手続き的(imperative) 手順を書く Azure CLI / PowerShell のスクリプト、シェル スクリプト

宣言的なツールは、現在の状態と宣言された状態を比較して
差分だけを適用するため、何度実行しても同じ結果に収束する。
手続き的なスクリプトで同じことを実現するには、
「既に存在するか」の判定を自分で書く必要があり、これが「厄介」の正体である。

詳細

以下の様なツールがある。

Azure系

区分についてはクラウド・インフラ自動化ツールを参照。

VM構成

VMカスタマイズ

  • PowerShell DSC
  • Azure カスタム スクリプト拡張機能

インフラストラクチャ管理

  • Azure Automation(オンプレも対象)

デプロイと配信

Azure系以外

クラウド・インフラ自動化ツールを参照。

補足(最新化:Azure 側の現在の選択肢): 本ページ執筆時から
ツールが世代交代している。

区分 当時 現在
VM 構成 / リソース定義 ARM テンプレート(JSON) Bicep(ARM の DSL。JSON より簡潔)、Terraform
VM カスタマイズ PowerShell DSC Azure Automanage Machine Configuration(DSC の後継)、cloud-init(Linux)
インフラ管理 Azure Automation Azure Automation(継続)、Azure Update Manager
デプロイと配信 Azure DevOps Services Azure Pipelines / GitHub Actions

Bicep は ARM テンプレートにトランスパイルされるため、
ARM の資産と互換性を保ったまま可読性を上げられる。
マルチクラウドや既存資産の都合で Terraform を選ぶケースも多い。

また、Kubernetes(AKS)を使う場合は、
クラスタ自体を IaC で作り、
クラスタ内の構成は GitOps(Flux / Argo CD)で管理する、という
二段構えが定石になっている。

補足(IaC を導入するときの要点):

論点 内容
状態ファイルの管理 Terraform の tfstate は機密を含む。リモート バックエンドに置き、ロックをかける
シークレット コードに書かない。Key Vault やパイプラインの変数グループから注入
環境差分 パラメータ ファイルで吸収し、テンプレート本体は共通化する
レビュー what-if / terraform plan の差分を適用前に必ず確認する
ドリフト 手作業でポータルから変更しない。した場合は検出して取り込む

最後の「ポータルで直さない」が最も破られやすく、
IaC が形骸化する主因である。

参考

Microsoft Learn


Tags: 移行, クラウド, ツール類, CI, IaC

⚠️ **GitHub.com Fallback** ⚠️