MS_IaC - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
- 戻る(クラウド系開発)
Infrastructure as Code(IaC)
(IaC であって、IaaC じゃないよ。)
-
コンピューティング・インフラ(プロセス、ベアメタルサーバ、仮想サーバなど)の
構成管理・機械処理可能な定義ファイルの設定・プロビジョニングを自動化するプロセス。 -
従来、手動のプロセスではなくスクリプトや宣言的な定義によって行われていたが、
IaC の開発は今では、宣言的なアプローチに焦点が当てられている(Code → DSL)。 -
テスト自動化と同様に、
- 適切なターゲットに有効
- スケール・メリットが必要。
補足(「IaC であって IaaC じゃない」): 冒頭の注意書きは実務でも有用である。
IaaS(Infrastructure as a Service)に引きずられて
「IaaC」と書かれることが多いが、
Infrastructure as Code なのでaは入らない。
補足(命令的と宣言的): 原文が言う「Code → DSL」の流れは、
命令的(imperative)から宣言的(declarative)へという変化である。【命令的】「VM を作れ」「NIC を作れ」「繋げ」…という手順を書く → 2 回実行すると 2 つできる(冪等でない) → 途中で失敗すると中途半端な状態が残る 【宣言的】「VM が 1 台、この構成で存在すること」という状態を書く → 何回実行しても同じ結果(冪等) → 実際との差分だけが適用される冪等性が宣言的アプローチの本質的な利点で、
「今の状態が分からなくても、あるべき状態を書けば収束する」
という安心感が運用を大きく変える。
補足(「適切なターゲットに有効」「スケール・メリットが必要」): この留保は重要である。
IaC は書く手間が先に来るため、
- 1 回しか作らない環境(PoC で捨てる)、
- 手順が頻繁に変わる(仕様が固まっていない)、
場面では割に合わないことがある。逆に効くのは、
- 同じ構成を何面も作る(開発 / 検証 / 本番、顧客ごと)、
- 作り直しが頻繁(検証環境を毎晩捨てる)、
- 構成の証跡が要る(Azure Virtual Data Center の言う
「不正作業の防止・牽制」)、という場面。テスト自動化と同じ判断基準になる、
という原文の対比は的確である。
補足: Azure CLI / Azure PowerShell で
スクリプトを書く方式。手順がそのまま書けるので着手しやすいが、
前述のとおり冪等性は自分で担保する必要がある
(「既にあるか確認してから作る」を自分で書く)。
最近の主流となっている、クラウド・インフラ自動化を行うツールの定義。
補足(Azure での選択肢): DSL 系は次のように整理できる。
ツール 特徴 ARM テンプレート Azure ネイティブ。JSON。冗長で読みにくい Bicep ARM の後継 DSL。ARM に変換される。現在の Azure での第一選択 Terraform HashiCorp 製。マルチクラウド。状態ファイル(tfstate)を持つ Pulumi 汎用言語(C#、TypeScript)で書く Ansible / Chef / Puppet OS 内の構成管理が主。プロビジョニングとは層が違う // Bicep の例:ARM テンプレートの JSON より大幅に短い resource sa 'Microsoft.Storage/storageAccounts@2023-01-01' = { name: storageName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' }Azure だけなら Bicep、マルチクラウドなら Terraform、
というのが現在の一般的な判断。
Bicep は Azure のリソース定義に追随が速く、
状態ファイルを持たない(Azure 自体が状態を持つ)点が扱いやすい。なお、作った一式をまとめて管理・削除するには
Azure Deployment Stacks を併用する
(Azure Blueprints の後継にあたる)。
- Infrastructure as Code - Wikipedia
https://ja.wikipedia.org/wiki/Infrastructure_as_Code
- Azure Infrastructure as Code 体験入隊
https://www.slideshare.net/ToruMakabe/azure-infrastructure-as-code
- Infrastructure as Code(IaC) について、今更ながら調べました
https://qiita.com/KeijiYONEDA/items/e9ed0daf0906adec810e
-
SI の労働生産性を高める IaC とは?
IT エンジニアのためのコミュニティ
「IaC 活用研究会」キックオフイベントレポート | Think IT(シンクイット)
https://thinkit.co.jp/article/13749 -
IaC 活用で SI エンジニアの長時間労働をなくせ――TIS とリアルグローブ、
IaC(Infrastructure as Code)活用研究会を設立
:IaC の活用でエンジニアの生産性向上目指す - @IT
https://www.atmarkit.co.jp/ait/articles/1801/23/news029.html
- Bicep のドキュメント
https://learn.microsoft.com/ja-jp/azure/azure-resource-manager/bicep/ - IaC とは(Cloud Adoption Framework)
https://learn.microsoft.com/ja-jp/devops/deliver/what-is-infrastructure-as-code
Tags: 移行, クラウド, ツール類, CI, IaC