〇はじめに
クラウドソリューションエンジニアの藤井です。
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接続にパスワードを使うパターンだけでなく、認証鍵を使うパターンでも同様に構築ができた実績があります。