Tech Summit 2018: Linuxユーザが扱うAzure Resource Manager Templateの活用方法
2018-11-27
azblob://2022/11/11/eyecatch/2018-12-23-azure-resource-magager-template-for-linux-users-000.jpg

〇はじめに

クラウドソリューションエンジニアの藤井です。

Tech Summit 2018で受講したセッション「Linuxユーザが扱うAzure Resource Manager Templateの活用方法」について、ご紹介します。

セッション内の様々なトピックスから抜粋してご紹介し、Azure Resource Manager Template(以下、ARM Template)を、藤井が過去の案件で利用した時の経験も補足いたします。

〇ARM Templateとは何か

ARM TemplateとはAzure Resource Manager(ARM)モデル(※)として、デプロイされた各リソースの情報を、json形式でテンプレート化したものです。

各リソースの設定だけでなく、リソース同士の依存関係もテンプレートの情報に含まれています。

既存の環境の構成をバックアップできることに加えて、開発用や本番用などとして同じ構成の環境を、繰り返し複製することができます。

※Micorosoft Azureで提供されている各種サービスは、大別して2種類に分かれます。

2010年にAzureのサービスが開始された時から提供されているAzure Service  Manager(ASM)モデルという区分と、2015年から提供が開始されたAzure Resource Manager(ARM)モデルという区分が存在します。

〇セッション内容の紹介

トピックス①パラメータファイルの分割について

ARM Templateでは「本体ファイル」とは別の「パラメータファイル」として、一部の値を記載し「本体ファイル」に読み込ませることができます。

社内共通で必ず設定する値を「本体ファイル」に記載し、利用者ごとに変更するような値を「パラメーター」ファイルに記載することで、各利用者が「本体ファイル」の値を不用意に

変更しないようにすることができます。

トピックス②デプロイは40分でタイムアウトし、ロールバックはされない

構築が一部のリソースのみ成功した場合、成功したリソースはリソースグループに残される。一部が失敗した後に、同じリソースグループへ再実行して全て成功した場合、作成済みのリソースはスキップされ、未作成のリソースのみ追加されます。

トピックス③リソースの依存関係について

複数のリソースを作成する場合に、作成する順番をARM Templateファイル内で”dependson”として制御する必要がある場合があります。何も指定が無い場合、リソースは常に同時に作成されます。例えば、仮想マシンは仮想ネットワークに対して登録されるので、仮想ネットワークが先に作成されるように制御します。

トピックス④ループ処理を利用する

「ループ処理」の機能を利用することで、「Code as a Infrastructure」としてプログラムのように処理を組むこともできます。例えば、クラスター環境で仮想マシンを大量に構築するときに有用です。同じ設定の仮想マシンを「ループ処理」で構築するプログラムを組むことで、作成する仮想マシンの台数を「ループ処理」の実行回数として柔軟に増減させることができます。

トピックス⑤JSONファイルの編集

JSONファイルを直接に編集するのが大変なケースも多いので、linuxユーザーにはなじみのあるYAML形式で作成して、変換する方法方も公開されています。

https://github.com/TeamYARM/YARM-CLI

〇藤井の経験則から補足

トピックス①パラメータファイルの分割について

セッション内で紹介されているケースとは逆に、利用者数が少なかったり、

特定のチームに限定される場合は、「パラメーターファイル」を使用せず、

全て「本体ファイル」で完結させた方が、簡便です。

トピックス②デプロイは40分でタイムアウトし、ロールバックはされない

リソースの種類数が多いときは、種類別に分割してARM Templateを設計することがお勧めです。修正を加えてテストするときに、対象の範囲を絞ることができます。

トピックス③リソースの依存関係について

設計時の肝要になるポイントです。

作成されるリソースの順序関係を指定した場合、前の順番のリソースの作成が完了してから、次のリソースの作成が開始されるため、全体の完了時間を左右します。

不要な設定をすると、完了に時間がかかります。

トピックス④ループ処理を利用する

ARM Templateの利用するメリットが最も発揮される機能です。藤井が対応したケースでは、100台以上のサーバーを同一のマスターイメージから大量に作成し、コンピューター名やIPアドレスなどを連番で割り振るように実装しました。ループ処理の回数などの実行条件を、利用することで、仮想マシンのリソース名を「1号機、2号機・・・」と連番で割り振るといったこともできます。

トピックス⑤JSONファイルの編集

セッションで紹介のあった方法以外に、エディターから直に編集するときは、Visual Studio Codeを利用すると、インテリセンスによる入力が利用できとても便利です。

〇その他

セッション内で説明のあったトピックス以外に捕捉すると、SSH接続にパスワードを使うパターンだけでなく、認証鍵を使うパターンでも同様に構築ができた実績があります。