この記事は セゾン情報システムズ Advent Calendar 2020 12日目の記事です。
はじめに
社内で実施しているワークショップには参加したことはあったのですが、今回初めてMicrosoft主催Azureワークショップに参加。
そして、Qiitaにも初投稿。
なので、記載レベルは大目に見てください
内容
「IaC(Infrastructure as Code) 」について
Infrastructure as Codeとは?
Azure初心者の私にとっては、まずこの言葉の意味が分かりませんでした。
Azureでインフラ環境等を構築する方法は主に下記の3つの方法があります。
1.ポータルで地道にクリックしてリソースを作っていく方法
2.Powershell・CLIで作成する方法
3.ARM(Azure Resource Manager)テンプレートで構築する方法
上記3.がコードを使用してインフラを構築・管理していく方法でIaC(Infrastructure as Code)と呼ばれています。
Azure Resource Managerとは?
「Azure Resource Manager」はAWSの「CloudFormation」に該当する機能であり、「インフラストラクチャビルド」ツールに分類される機能です。
「Azure Resource Manager」の主な機能は下記の通りです。
● アプリリソースをデプロイする
● リソースを整理する
● リソースへのアクセスを制御する
下の図はAzure要求の処理において「Azure Resource Manager」が果たす役割を示しています。
ポータルで利用できるすべての機能は、PowerShell、Azure CLI、REST API、およびクライアント SDK からも利用できます。 API を介して最初にリリースされた機能は、最初のリリースから 180 日以内にポータルに表示されます
この機能を有効に活用するために用意されているテンプレートが「Azure Resource Manager テンプレート」です。
Azure Resource Manager テンプレートとは?
◼ 展開するAzure リソースを定義したJSON ファイル
● 展開するAzure リソースと、それらリソースのプロパティを指定
● 仮想マシンだけでなく、ネットワーク、ストレージ、その他リソースも展開可
◼ 常に一貫性のある方法でリソースを展開
● 同じリソースの種類を何度でも同じ状態で作成
● 相互に依存するリソースの展開を調整、正しい順序でリソースを展開
◼ PowerShell またはBash スクリプトを利用した設定機能の拡張
● スクリプトは外部ソースに格納してテンプレート内で参照することも可
◼ Visual Studio Code, Visual Studio へのテンプレート作成機能の提供
● Intellisense, 構文の強調表示、インラインヘルプ等、多くの言語機能を提供
◼ 継続的インテグレーションと継続的配置(CI/CD)ツールに統合
● リリースパイプラインの自動化
JSON形式なのでリソース定義のテンプレートだとこんな記載になります。
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2020-12-12",
"name": "teststorageaccount",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {}
}
]
Azure Resource Manager テンプレートの管理
テンプレート自体がJSON形式であるため、Visual Studio Codeをしてしてテンプレートを作成し、GitHubを使用してテンプレートを管理したりと様々な作成や管理方法があります。
ワークショップでも色々な管理方法を学んだのですが、ハンズオンについていくのが精一杯だったので頭の中を整理して自分で理解ができるレベルの到達したら今後投稿していきます。
今後の活用
アプリケーション開発が伴う環境構築の場合には「本番環境」「検証環境」「開発環境」と言った複数の環境構築及びそれぞれの環境に対するアプリケーションリリース等の作業が発生することになります。
まだまだAzureの世界では初心者ですが、この機能を使って環境構築やデプロイ作業の反復作業のミスを少なくすることや、複数のテンプレートを作成することでより短時間で環境構築ができる方法を考え生きたいと思っています。
参考
● MS公式サイト「Azure Resource Manager とは」
● MS公式サイト「ARM テンプレートとは」