MS_CloudInfraAutomation - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(クラウド系開発)
- クラウド・インフラ自動化
- CI/CD / CI/CD パイプライン
- IaC とも呼ばれる。
- 自動化ツールが数多くリリースされている。
- クラウド活用が進み、今後、更に重要度を増していくものと思われる。
クラウド・インフラ自動化ツールは、構成管理において厄介な
「何度実行されても同じ状態に収束する」
普遍(冪等)性をツール側が保証するようになっている。
補足(宣言的と手続き的): 冪等性が自然に得られるかどうかは、
ツールの記述スタイルで決まる。
スタイル 記述内容 例 宣言的(declarative) あるべき状態を書く ARM / Bicep、Terraform、PowerShell DSC、Kubernetes マニフェスト 手続き的(imperative) 手順を書く Azure CLI / PowerShell のスクリプト、シェル スクリプト 宣言的なツールは、現在の状態と宣言された状態を比較して
差分だけを適用するため、何度実行しても同じ結果に収束する。
手続き的なスクリプトで同じことを実現するには、
「既に存在するか」の判定を自分で書く必要があり、これが「厄介」の正体である。
以下の様なツールがある。
区分についてはクラウド・インフラ自動化ツールを参照。
- PowerShell DSC
- Azure カスタム スクリプト拡張機能
- Azure Automation(オンプレも対象)
- Azure DevOps Services
クラウド・インフラ自動化ツールを参照。
補足(最新化: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 が形骸化する主因である。
- ハイブリッド、マルチクラウド環境での「Infrastructure as Code」(IaC)ツール
何を導入すればよい?:ネイティブか、サードパーティーか - TechTarget ジャパン
https://techtarget.itmedia.co.jp/tt/news/1811/14/news04.html
-
Azure Automation の概要
https://learn.microsoft.com/ja-jp/azure/automation/overview -
Azure Automanage Machine Configuration の概要
https://learn.microsoft.com/ja-jp/azure/governance/machine-configuration/overview -
Azure 仮想マシンの拡張機能とその機能
https://learn.microsoft.com/ja-jp/azure/virtual-machines/extensions/overview- Windows 用の仮想マシン拡張機能とその機能
- Linux 用の仮想マシンの拡張機能とその機能
-
Azure の Windows VM 用インフラストラクチャ自動化ツールを使用する
https://learn.microsoft.com/ja-jp/azure/virtual-machines/windows/infrastructure-automation -
Bicep とは
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/overview
Tags: 移行, クラウド, ツール類, CI, IaC