Azure Resource Managerとは?Infrastructure as codeも実現するリソース管理

Azureのクラウドサービスを利用するならば、リソース管理の「Azure Resource Manager」を理解しておくと便利です。Azure Resource Managerではリソースグループを管理すること、そしてテンプレートによってInfrastructure as codeが実現できます。本コラムでは、Azureのサービスを使う上で基本となる「Azure Resource Manager」について、Azure Resource Managerとはそもそも何なのか、そしてAzure Resource Managerの主な特徴を解説します。

Azure Resource Managerとは

Azure Resource Managerとは、Azureのリソースグループを管理する機能であり、Azureサービスにおけるリソース管理の概念とも表現できるでしょう。

Microsoftが提供するAzureを使ったシステム構築には「Azure Portal」「PowerShell CLI」「ARMテンプレート」を利用する方法があります。例えば、Azure Portalを使ってシステム構築をするとき、仮想マシンなどのリソースを視覚的に直接扱っているように見えます。しかし、仕組みとしては「Azure Portal 」→「Azure Resource Manager」→「リソース」というように、間接的な作業をしているのです。Azure Resource ManagerをGUIとして可視化したものがAzure Portalだとイメージすると分かりやすいでしょう。

また、Azure Resource Managerは、テンプレート機能を利用することにより、Infrastructure as codeを実現できるという大きな特徴があります。システム構築に必要なリソース構築をスクリプト化してテンプレートファイルで利用すれば、効率的なインフラ構築ができるのです。

Azure Resource Managerは、その実態を意識することはほとんどありませんが、エンジニアがAzureのリソースを扱うときに必ず機能している重要なシステムであることを意識しておきましょう。

Azure Resource Managerで使用される用語

Azure Resource Managerを理解する上で大切なことは、リソースやリソースグループといった、Azureには欠かせない用語です。まず、基本となる用語を確認していきましょう。

リソース

リソースとは、Azureが提供する個々のサービスです。
代表的なものには「仮想マシン」「ストレージ」「データベース」「Webアプリ」「仮想ネットワーク」などが挙げられます。

リソースグループ

リソースグループとは、仮想マシンやストレージなどのシステム構築に必要なリソースをグループ化したものです。
例えば、「○○ブログ」というサイトを構築するために「Webサーバー」「データベース」「ストレージ」というリソースを組み合わせたとします。このとき、3つのリソースをリソースグループとして管理することで、リソースを一覧したり、サービスが終了した時点でリソースを一括削除したりできます。

サブスクリプション

サブスクリプションは、リソースグループの上位レベルに位置するもので、リソースグループをさらにグループ化して管理します。例えば、A・B・Cの3つのグループリソースを、「A・B」と「C」という2つのまとまりに分けた場合、このそれぞれのまとまりがサブスクリプションです。
サブスクリプションにポリシーを適用すると、下位レベルにあるリソースグループとリソースに適用されます。

管理グループ

管理グループは、サブスクリプションの上位レベルに位置するグループです。複数のサブスクリプションをグループとして管理できます。
リソースグループの詳細や、管理グループ、サブスクリプション、リソースグループ、リソースの関係については、Microsoft Azureにおけるリソースグループの役割をご参照ください。

リソースプロバイダー

リソースプロバイダーとは、Azureサービスを提供するサービスです。
例えば、Virtual Machines(仮想マシン)を提供するリソースプロバイダーは「Microsoft.Compute」、管理グループを提供するのは「Microsoft.Management」といった具合です。Azureサービスは、リソースプロバイダーとマッピングされています。

Resource Manager テンプレート

Resource Manager テンプレートは、システム構成の手順をスクリプト化したテンプレートです。テンプレートを使うことで、同じ構成のシステムを素早く構築できます。
テンプレートは、リソースグループやサブスクリプション、管理グループといった単位で適用できます。

宣言型構文

宣言型構文は、構築するシステムをプログラミングなしで宣言できる構文です。上述のResource Manager テンプレートも宣言型構文の1つで、効率的にシステム構築できます。

Azure Resource Managerの主な特徴

Azure Resource Managerの基本を抑えたところで、主な特徴を見ていきましょう。

リソースグループの管理

Azure Resource Managerは、Azureのリソースをリソースグループ単位で管理します。
リソースグループというまとまりで管理すれば、リソースの作成・更新・削除などを一括でおこなえるのです。例えば、企業内にある複数の部署で異なるシステム構築が必要な場合でも、部署ごとに異なるシステム構成をグループに分ければ、各部署のリソースグループごとに管理できます。
経理部や営業部といった部門ごと、あるいは開発環境と本番環境なども、Azure Resource Manager が効率的な管理を実現します。
このとき、Azureサービスを利用するユーザーは、Azure Resource Managerがおこなうリソース管理をAzure Portalなどを通して視覚的に確認しています。

テンプレートによるシステム構築

Azure Resource Managerでは、テンプレートによるシステム構築ができます。
これは、利用するリソース構成をスクリプト化し、テンプレートファイルにしておくことで、システムを自動生成できるということです。
テンプレートは、リソースグループやサブスクリプション、管理グループ単位で適用できますし、複数のリソースを定義することもできます。つまり、Azure Resource ManagerでInfrastructure as codeが実現できるということなのです。
これにより、システム構築時のオペレーションミスや、既存の環境を迅速にデプロイできるというメリットがります。また、差分やバージョン管理もコード化することで、通常のソフトウェアをインストールするように効率的なインフラ構築ができるのです。

タグによるサブスクリプション管理

リソースにタグを付けることで、サブスクリプション配下のリソースおよびリソースグループを論理的に分類整理できます。
タグは名前と値の組み合わせで構成されていますので、「○○プロジェクト」の「開発環境」などといったタグを付与して、目的のリソースを素早く整理するのに便利です。例えば、複数のリソースグループから「開発環境」がいくつあるのかを特定するときなどに使えます。
リソースにタグを適用するにはリソースへのアクセス権限が必要ですが、例えばタグ共同作成者ロールを割り当てられたユーザーならば、アクセス権限がなくてもタグを付与できます。

ロールベースのアクセス制御

Azure Resource Managerでは、ロールベースのアクセス制御(RBAC)が可能です。
Azure RBACを利用することで、ユーザーにロールを適用し、アクセス権限やリソースに対するアクションを制御します。
例えば、仮想マシンの所有者ロールを割り当てられたユーザーは、仮想マシンの作成から削除、その他のユーザーに対して権限を付与する権利を持つことができます。また、共同作成者ロールを割り当てられたユーザーは、Azureリソースの作成や管理をおこなえます。
プログラマがリソースを削除するなどといったオペレーションミスを防ぐため、プログラマには共同作成者ロールを割り当てるなどといった使い方が想定されるでしょう。
つまり、ユーザーごとにロールを割り当て、パーミッションの制御をおこなえるということです。

まとめ

Azure Resource Managerは、Azureで提供されるリソースをリソースグループ単位で管理するという概念です。システム構築に必要なリソースはスクリプト化しテンプレートにすることで、Infrastructure as codeを実現します。ユーザーがAzureを利用する上ではAzure Resource Managerを意識することはほとんどありませんが、仕組みを理解してAzureサービスを効率的に利用しましょう。

ネットワークからクラウドまでトータルサポート!!
NTT東日本のクラウド導入・運用サービスを確認してください!!

Amazon Web Services(AWS)、Microsoft Azureの
導入支援サービスのご相談、お問い合わせをお待ちしております。

ページ上部へ戻る