[Azure] 101-vm-multiple-ipconfig テンプレート読み解き
はじめに
Azure QuickStart Templates を読み込んで勉強しよう!
ということで、アウトプットもしてみます。第2弾。
今回の読み解き対象
テンプレートの概要
こちらのテンプレートをデプロイすると、3つの IP を持つ Azure VM がデプロイされます。
読み解く
パラメータ指定 (parameters)
前半の "parameters": から始まる部分では、テンプレート内で使われるパラメータ (変数) の設定です。テンプレートのデプロイ時に選択肢として表示させたりすることができます。管理者ユーザー名/パスワードや OS の指定などができるようになっています。
  "parameters": {
    "adminUsername": {
      "type": "string",
      "metadata": {
        "description": "Admin username"
      }
    },
    "adminPassword": {
      "type": "securestring",
      "metadata": {
        "description": "Admin password"
      }
    },
    ...
"type": "securestring" と指定することで、一般的なパスワード入力画面のようにマスクした状態で入力することができます。また、デプロイ後のログ等でも値を確認することができなくなるため、安全にパスワードのような文字列を渡すことができます。
参考 : テンプレートのベスト プラクティス - Azure Resource Manager | Microsoft Docs
変数の設定 (variables)
"variables": セクションでは、この yaml ファイル中で利用する変数名を設定できます。このテンプレートでは、サブネットや VM 名などをここで設定しています。変更したいときは、適宜こちらを書き換えてからデプロイすれば良いですね。
  "variables": {
    "addressPrefix": "10.0.0.0/16",
    "subnetName": "mySubnet",
    "subnetPrefix": "10.0.0.0/24",
    "publicIPAddressType": "Static",
    "publicIPAddressType2": "Static",
    "nicName": "myNic1",
    "vnetName": "myVNet1",
    "publicIPAddressName": "myPublicIP",
    "publicIPAddressName2": "myPublicIP2",
    "vmName": "myVM1",
    "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('vnetName'), variables('subnetName'))]",
    "networkSecurityGroupName": "default-NSG"
  },
デプロイするリソースの記述 (resources)
"resources": セクションで、デプロイするリソースを記述しています。「3つの IP を持つ Azure VM」を記述していきますが、下記のような流れで記述しています。
- IP アドレスの定義 
Microsoft.Network/publicIPAddresses - NSG の定義 
Microsoft.Network/networkSecurityGroups - VNet の定義 
Microsoft.Network/virtualNetworks - NIC の定義 
Microsoft.Network/networkInterfaces - VM の定義 
Microsoft.Compute/virtualMachines 
「NIC の構成が決まっていないと、VM の構成が決まらない。IP や VNet の構成が決まっていないと、NIC の構成が決まらない。」みたいにイメージすると、設定の流れがわかりやすいかなー、と思います。
それぞれのブロックの中身は、そんなに難しいところはなさそうですね。直感的に理解できる感がありました。
最後に
Azure QuickStart Templates は、Azure を勉強するにあたっては結構宝の山だとも思うので、今後も面白そうなものを読み解いてはアウトプットしていきたいな、と思います。
Discussion