Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Hands on ARM template

603 views

Published on

HandsOn ARM template for Linux

Published in: Technology
  • Login to see the comments

Hands on ARM template

  1. 1. ver 1.92 2018年6月
  2. 2. 2 はじめに Hands_onを実施する上で必要な環境条件 〇インターネットアクセス可能なクライアントPCをお持ちであること。 〇Microsoft AzureのAzure Portalにログインできること。(サブスクリプションをお持ちであること) 〇事前インストール作業(次ページ)をクライアントPCで実施済であること 〇本コンテンツを表示するプロジェクタおよびモニターの設備があること。(講師説明向け) Hands_onを通じて身につくスキル 〇Microsoft Azureが提供するARM templateを使ったAzure IaaSの自動構築技術 - ARM templateの操作方法とJSON形式の記載方法 - Visual Studio Codeの基本的な操作方法(JSONコードの記載、拡張機能、GitHub連携) - LinuxターミナルからARM templateの操作方法 Hands_onの対象となる方 〇Microsoft AzureのIaaS機能をご利用されたことがある技術者 ※ VM/可用性セット/vNET/subnet/NSG/StorageAccount 〇CentOSで標準的なコマンドラインの操作ができる技術者 ※ Linuxクライアントをご利用される方向けのみ
  3. 3. 3 以下は事前にインストール/設定をお願いします 必須 - GitHub アカウントの作成サイト(Enterprise版は有償) https://github.com/ ※参考サイト:初心者向けGitHub作成方法 https://techacademy.jp/magazine/6235 どちらか必要 〇 WindowsOSから操作する方 - Visual Studio Codeのインストール https://code.visualstudio.com/docs/?dv=win 〇 LinuxOS(CentOS)から操作する方 Gitのインストール(root@nodename# yum install git –y)
  4. 4. 4 アジェンダ 1 ARM templateの仕様について(おさらい) 2 開発環境の準備と設定 - Windowsクライアントからの操作 - Linuxクライアントからの操作 3 JSON形式の読み方・書き方 - 基本構造 - 値の呼び出し方 - 関数の説明 4 Azure Potarl連携その1 storageaccountのひな型テンプレートを修正しデプロイする 5 Azure Portal連携その2 Portalから手動作成したRGからテンプレートをエクスポート 6 実習:テンプレート作成とデプロイ(NSG) 7 仮想マシンの作成 8 固定の文字列定義を任意指定の定義へ変更する 9 実習:テンプレート作成とデプロイ(VM+α) 10Azure QuickStart Templatesの確認 11appendix 準備 座学 実践 補足
  5. 5. 5
  6. 6. 利用可能なインターフェース Azure ポータル、SDK-CLI 各種 コードの形式 JSON 形式 テンプレートの単位 Resource Group 単位 (ASM※V1はご利用できません) 基本機能 テンプレートからのデプロイ機能(増分/完全) Resource Group 単位のエクスポート機能 料金 無料(デプロイしたリソースは有料) Tech Summit 2016で紹介しています。詳細は以下をご視聴ください。(約53分) https://www.youtube.com/watch?v=gHs_KMoYYlY&feature=youtu.be
  7. 7. 7
  8. 8. 開発環境のゴール(github連携) ローカルPC(クライアント) Visual Studio Code(エディタ) Linux向けターミナル push/sync GitHub(バージョン管理) Microsoft Azure Azure Portal
  9. 9. 開発環境のゴール(テンプレートデプロイ) ローカルPC(クライアント) Visual Studio Code(エディタ) Linux向けターミナル GitHub(バージョン管理) Microsoft Azure Azure Portal Import/Export テンプレート からの デプロイ
  10. 10. Windowsクライアントからの操作(1) フォルダを開く。.jsonファイルを指定すると 右側のメイン画面にコードが表示されます githubのローカルレポジトリを開きます。 リモートレポジトリ(サイト側)へのpush/pullや Syncなどを実行します 拡張機能: Azure Resource Manager toolsを入れておきます ※ver.0.3.2以上です お好みでVim emulation for Visual Studio Code 0.4.4以上を入れておくとLinuxユーザーはviモード で操作可能となります Visual Studio Code(エディタ) Jsonコードをゴリゴリ いじる場所
  11. 11. Windowsクライアントからの操作(2) 文法の間違いがあると赤色や赤ジャミ線で表示されます Visual Studio Code(エディタ) 間違いがある行は赤色マークが出ます
  12. 12. Linuxクライアントからの操作(git の設定) CentOS7.2の場合 sudo su – yum update yum upgrade yum install git 1)ローカルリポジトリを作成する $ git init 2)ローカルリポジトリにファイルの変更点を追加(インデックスに追加) $ git add ファイル名 3)ローカルリポジトリにインデックスに追加したファイルを登録 $ git commit -m "変更点などのコメント" 4)追加したインデックス(ファイルの変更点など)をGitHubに作成 $ git remote add origin リポジトリのURI 5)ローカルリポジトリのファイルをGitHubのリポジトリに送信 $ git push origin master
  13. 13. 13
  14. 14. 基本構造 省略可能な定義
  15. 15. 文法における注意点 0)JSONではコメントを記載する場合、”metadata”や”comments”として定義した中で値としてコメント文を 記載します。(#や//、/* */といった言語でよく使われるコメント記号は存在しません) 1)「,」カンマは記載した定義を複数個続けて記載する場合に使います。最後の定義はカンマを付けません。 2)「[]」(中括弧)は配列や関数を呼び出す場合に使います。 3)記載の原則パターンは以下 “ほげほげ”: { } 続けて記載する場合は以下のようにカンマを忘れずにつけるようにしましょう。 “ほげほげ”: { }, “ほげ2”: { } 4)記載する順序は意識する必要はありません(入れ子の書き方でよい) ※例外もある。 依存性を意識しなければならないリソースはdependsOnを使って依存性の定義を入れる必要があります。 (resourcesの個所で後述)
  16. 16. parametersの定義(代表的な記載方法) "parameters": { “任意な変数名”: { “defaultValue”: “デフォルトで指定したい場合の文字列や値", “type”: “stringやsecureString(パスワード時)などを記載する", "allowedValues": [ “選択可能文字列/値1個目", “選択可能文字列/値2個目“ ], "metadata": { “description”: “説明文“ } }, “任意な変数名”: { } }, “variables”: { }, “resources”: { } もっと詳しく!! ⇒ https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates
  17. 17. parametersのサンプル "osVersion": { "type": "string", "defaultValue": "7.2", "allowedValues": [ "7.2", "7.1", "7.0", "6.8", "6.7", "6.6", "6.5“ ], "metadata": { "description": "OS Version of CentOS.“ } } osVersionという変数名が定義されている 入力は文字列として扱われる 特に指定しなければ7.2という文字列になる 選択できる文字列はこの範囲 説明文(コメント)ではCentOSの バージョンを選択させている
  18. 18. "parameters": { }, “variables”: { “任意な変数名”: “固定としたい文字列", “任意な変数名”: “[concat(‘先頭の文字列/値’,‘後ろに繋げたい文字列/値')]“, “任意な変数名”: “[concat(parameters(‘パラメータで指定した変数名’),‘繋げたい文字列')]" }, “resources”: { } variablesの定義(代表的な記載方法) もっと詳しく!! ⇒ https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates 文字列を連結したい時に使う関数です。非常によく使います。 [concat(‘明日は’,’晴れる’,’かなぁ’)]という具合にシングルクォートとカンマを 使って繋げていきます。 Parameters内で作成した変数を呼ぶ場合はシングルクォートで括る必要はありません
  19. 19. variablesのサンプル "networkInterfaces_name": “nic01", "publicIPAddresses_name": "[concat(‘vm01‘,’-pip')]", "storageAccounts_name": "[concat(parameters('virtualMachines_name'),'stor01')]", ・ ・ ・ networkInterfaces_nameという変数名には「nic01」という文字列を入っています publicIPAddresses_nameという変数名には「vm01-pip」という文字列を入れています storageAccounts_nameという変数名にはparametersで定義したvirtualMachines_nameという変数名の 中身の文字列の後ろに「stor01」を付けた文字列を入れています もっと詳しく!! ⇒ https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-authoring-templates
  20. 20. resourcesの定義(代表的な記載方法) "parameters": {}, “variables”: {}, “resources”: [ { “comments”: “説明文、コメントを記載する", “type”: “Microsoft.*****/******", “name”: “RFC3986(URI)に準拠する任意な名前", "apiVersion": “YYYY-MM-DD", "location": "", "properties": { “指定可能な項目": { “指定可能な項目":"“ } }, "dependsOn": [], }, { “comments”: “説明文、コメントを記載する", } ] 異なる”type”の定義は この単位を増やしていく。
  21. 21. resourcesの定義(詳細1) “type”:”Microsoft.****/****” で指定するIaaSの代表的なもの Microsoft.Compute/availabilitySets 可用性セット Microsoft.Compute/virtualMachines 仮想マシン Microsoft.Network/networkInterfaces NiC Microsoft.Network/networkSecurityGroups NSG(Network Security Group) Microsoft.Network/publicIPAddresses パブリックIPアドレス Microsoft.Network/virtualNetworks vNET(Virtual Network) ※ここでsubnetも記載 Microsoft.Storage/storageAccounts ストレージアカウント Microsoft.Compute/virtualMachines/extensions カスタムスクリプトの埋め込み機能 “apiVersion”: “YYYY-MM-DD” で指定できる日付 下記「もっと詳しく!!」のURLにある各機能別サイト(type別)に記載されている日付がセット可能。 apiVersionによって利用できる項目が異なることに注意が必要。 もっと詳しく!! ⇒ https://docs.microsoft.com/ja-jp/rest/api/compute/
  22. 22. resourcesの定義(詳細2) “location”:”リージョン“ で指定する文字列 東日本リージョンの場合を例にすると”japaneast”と固定で記載することも可能だが注意が必要。 ARM templateはResourceGroupの中にデプロイするものであることから、東日本リージョンで作成 されたResourceGroup内にlocationをjapanwestと記載したデプロイはできない。(エラーになる) そのため、「デプロイするResourceGroupを読み込んで自動でセットする」という記載方法が最も 無難な記載方法となる。 "location": "[resourceGroup().location]", ⇒ resourceGroupという関数を使い、デプロイ先のResourceGroupのlocation値をセットする、 という記載方法。 “properties”: “”で指定する項目 下記「もっと詳しく!!」のURLにある各機能別サイト(type別)に記載されている項目がセット可能。 type別サイト上部にあるapiVersionに注意してください。バージョンによって同じ意味を成す項目でも 記載文字列が異なる場合があります。 もっと詳しく!! ⇒ https://docs.microsoft.com/ja-jp/rest/api/compute/
  23. 23. resourcesの定義(詳細3) “dependsOn”:”“ で指定する文字列 dependsOnは記載しているtype外との依存性が関係する場合に記載します。 〇例えば仮想マシンを定義する「Microsoft.Compute/virtualMachines」では ストレージアカウントと可用性セット、NiCが依存関係にあります。 そのためvirtualMachinesの定義内の最後にdependsOnとして以下の記載を入れます。 “dependsOn”: [ “[resourceId('Microsoft.Compute/availabilitySets', parameters('availabilitySets_name'))]", "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccounts_name'))]", "[resourceId('Microsoft.Network/networkInterfaces', variables('networkInterfaces_name'))] ] 〇NiCの定義では以下の依存関係を入れます。(publicip/VM/NSG) "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddresses_name'))]", "[resourceId('Microsoft.Network/virtualNetworks', parameters('virtualNetworks_name'))]", "[resourceId('Microsoft.Network/networkSecurityGroups', parameters('networkSecurityGroups_name'))]“ 〇Extension機能では以下の依存関係を入れます。(VM) "[resourceId('Microsoft.Compute/virtualMachines', parameters('virtualMachines_name'))]" もっと詳しく!! ⇒ https://docs.microsoft.com/ja-jp/rest/api/compute/
  24. 24. resourcesのサンプル 長いので以下を閲覧ください。 https://github.com/akkoike/ARMtemplate/blob/master/other/trainning-sample1.json typeからVMの定義であることがわかる。 PropertiesからCentOSを作成する記載とわかる。 可用性セットやNiCの設定を入れていることがわかる。 SSH-key公開キーの配置場所をparametersで入力された文字列を指定して配置していることがわかる。 依存性のある定義をdependsOnで定義されていることがわかる。
  25. 25. 25
  26. 26. StorageAccountのひな型を使ったデプロイ Azure Portalから「新規」をクリック 1) 2) templateと入力しリターン
  27. 27. StorageAccountのひな型を使ったデプロイ 「テンプレートのデプロイ」をクリック 3) 4) 「作成」をクリック 「エディターで独自のテンプレートを作成する」をクリック
  28. 28. StorageAccountのひな型を使ったデプロイ 「リソースの追加」をクリック 5) 6) プルダウンから「ストレージ アカウント」を選択 名前を「stor01」と入力 OKをクリック
  29. 29. StorageAccountのひな型を使ったデプロイ 「ダウンロード」をクリック 7) 8) 「ファイルを開く」 .json拡張子をVS Codeに関連付けしていない場合は 一度「保存」してからVS Codeで開く。 「保存」をクリック
  30. 30. StorageAccountのひな型を使ったデプロイ リソースグループは「新規作成」にチェックし 「test-template01-rg」と入力 9) 10) 「上記の使用条件に同意する」をチェック 「購入」をクリックするとチェック処理行われ 問題なければ次の画面へ行く (※PortalではvalidateチェックではなくPortal専用の チェック) 鈴のアイコンをクリックしdeploy状況を確認 緑色のアイコンになるとdeploy成功 作成したRGとStorageAccountを確認しよう
  31. 31. StorageAccountのひな型を使ったデプロイ 1つだけ、あれ?っと思った方へ。 JSONのtemplateを確認してみましょう。答えはそこに隠されています。 11)
  32. 32. StorageAccountのひな型をGithubで管理 12) 先ほど開いたstorageaccountの.jsonファイル はgithubのローカルレポジトリ先フォルダに 「storageaccount-template.json」という名前で 保存し、VS codeでローカルレポジトリ先の フォルダを開いておきましょう。 ローカルレポジトリに更新があった場合は このアイコンに更新ファイル数の数字がつきます。 クリックします。 更新する理由を記入「new file upload」します。 ローカルレポジトリへコミット(反映)させます
  33. 33. StorageAccountのひな型をGithubで管理 13) 「プッシュ先」を選択するとリモートレポジトリ のURLが出ます。ブラウザで確認します。 プッシュ先として問題なければgithubアカウント とパスワードを聞かれるため入力すると リモートレポジトリ側へ反映されます。 ※ブラウザで確認します
  34. 34. 34
  35. 35. vNetとSubnetをPortalから作成しエクスポート 1) Azure Portalの「新規」から「仮想ネットワーク」 を選択します Resource Managerになっていることを確認し 「作成」をクリックします 2) 名前 vnet-test01 アドレス空間 192.168.0.0/16 リソースグループ 既存のものを使用にチェック test-template01-rg を選択 場所 東日本 サブネット名 subnet01 サブネットアドレス範囲 192.168.0.0/24 ⇒作成ボタンをクリック ※既にご利用されているアドレスが同一subscriptionにある場合は 別のアドレス範囲でご指定ください。
  36. 36. vNetとSubnetをPortalから作成しエクスポート 3) Azure Portalからの作成が終わればリソースグループの 一覧からtest-template01-rgの中身を確認し、vnet-test01が 作成されていることを確認 「Automation スクリプト」をクリックすると作成した 仮想ネットワークのJSONコードが表示されます。 4) 「ダウンロード」をクリックしVS Codeで開きます JSON本体ファイルは「template.json」です。
  37. 37. vNetとSubnetをPortalから作成しエクスポート 5) VS Codeからsubnetの記載部分を確認し、以下の 赤色部分を追加します 6)編集したJSONコードをコピーし、 test-template01-rgをした「テンプレートのデプロイ」を実施 ⇒ おそらくStorageAccount名が重複されているため、先に進めないはず。 Portal側での制御がされており、PowerShellやAzureCLi側のvalidationとは異なる冪等性チェックがある。 Portal側からデプロイする場合は、修正された必要最低限の機能だけ増分デプロイするように扱う。 { "name": "subnet01", "etag": "W/"dff49127-b88a-418e-bb63-13321360c11b"", "properties": { "provisioningState": "Succeeded", "addressPrefix": "192.168.0.0/24“ } }, { "name": "subnet02", "properties": { "addressPrefix": "192.168.1.0/24“ } }
  38. 38. vNetとSubnetをPortalから作成しエクスポート 7)JSONの中身でparametersのStorageAccountが記載されている以下の行を削除する。 8)JSONの中身でresourcesに記載されているStorageAccountの行を全て削除する。 { “comments”: “リソース ‘/subscriptio***”, "type": "Microsoft.Storage/storageAccounts", *** } "storageAccounts_storagestrakbhan3s67fjc_name": { "defaultValue": "storagestrakbhan3s67fjc", "type": "String“ } 9)JSONの中身でresourcesに記載されていたStorageAccountを削除したため、 Microsoft.Network/virtualNetworksを定義している最後の},を}で終わらせる。(カンマを削除する) 10)6で実施した「テンプレートのデプロイ」をもう一度実施する。 ⇒ vNETのみを修正した場合はデプロイが成功し、新たにSubnet2が追加されたことを確認する。
  39. 39. 39
  40. 40. お題 1)Azure PortalからNetwork Security Groupを以下の設定で作成してください。 受信規則:受信側の名前 inbound-http 許可するプロトコル TCP 許可するポート 80 優先度 100 2)上記で作成したNSGをテンプレートエクスポートし、nsg-template.jsonという名前で新規に github(リモートレポジトリ側)へファイルを同期してください。 3)nsg-template.jsonを追加・修正し、以下の設定を加えてください。 送信規則:送信側の名前 outbound-ftp 許可するプロトコル TCP 許可するポート 21 優先度 100 4)3で追加したテンプレートをテンプレートデプロイし、既存のNSGにFTPの送信規則が 追加されていることをAzure Portalから確認してください。
  41. 41. 41
  42. 42. 1)まずはAzure Portalでtest-template01-rgのResourceGroup内に仮想マシンを作成してください。 仮想マシン名やサイズ、storageAccount名、vNetアドレス、Subnetアドレスは問いません。 お好きな名前と設定でよいですが、以下の条件は満たしてください。 ・仮想マシンは1台 ・OSはCentOS 7.2である ・可用性セットが1つついている ・vNET内の1つのSubnetに作成したVMが入っている ・public ipが1つついている ・カスタムスクリプトの機能はONにし、以下のURLを指定 https://raw.githubusercontent.com/akkoike/ARMtemplate/master/parts/VirtualMachine/script.sh ・作成した仮想マシンのOSにログインできる。(Linuxユーザーではない場合は不要) 2)作成が完了したら、「Automationスクリプト」からテンプレートをエクスポートします。 3)エクスポートしたテンプレートは、testvm-template.jsonというファイル名でGithubへ プッシュしてください。(省略可) 仮想マシンの作成 エクスポート
  43. 43. 43
  44. 44. 1)エクスポートしたJSONファイルは固定で定義されている状態となります。 そのまま修正せずに保管しておくことで、ResourceGroup単位で問題があった場合に Resource Groupを削除し、同様の環境をデプロイすることができます。 一方で、汎用性をもったJSONファイルが必要となります。 例えば、OSのバージョンは複数の選択肢から選択できるようにしておきたい、ストレージアカウントの 冗長方式はLRSではなくRA-GRSも選択できるようにしたい、などが該当します。 以下は固定で定義されているものをparametersへ切り離し、汎用性を持たせたテンプレートの作成方法 を学びます。 2)エクスポートしたtestvm-template.jsonのOSバージョンが指定されている部分に移ります。 ⇒ resources内のMicrosoft.Compute/virtualMachinesが定義されているskuの部分です。 修正前: "sku": “7.2", 修正後: "sku": "[parameters('osVersion')]", 固定定義の変更
  45. 45. 3)parametersの中に以下を追加(前後のカンマを注意してください) "osVersion": { "type": "string", "defaultValue": "7.2", "allowedValues": [ "7.2", "7.1", "7.0", "6.8", "6.7", "6.6", "6.5" ], "metadata": { "description": "OS Version of CentOS." } }, 固定定義の変更
  46. 46. 3)JSONの文法エラーが出ていないことを確認し、Azure Portalからテンプレートデプロイで 作成したJSONをコピペで張り付けてください。 テンプレートをデプロイする前に入力を促す画面にて、osVersionの行が新たに出てきたことを 確認してください。 このように、固定の文字列で定義されているものをparametersやvariablesに切り離すことができます。 !! パラメータシート(Excel)からCSVフォーマットで落とした値を読み込み、あらかじめ汎用性を持たせた 記載内容に値をセットする、といった工夫を行うことで汎用性を持ったテンプレートの活用幅が広がります。 固定定義の変更
  47. 47. 47
  48. 48. お題 仮想マシンをエクスポートしたJSONファイルの中で、osVersion以外の 固定定義を何か1つvariablesで指定するように変更してください。 ※変更する部分はresources内で固定で定義されているものとします。
  49. 49. 49
  50. 50. 活用方法(ひな型) Azure Quickstart Templatesは、有志が作成したひな型のテンプレートです。 ※中には動かないものもあります。。。 そのまま活用するのもよいですが、これまでに学習したスキルを持って自分の扱いやすいテンプレートへ ローカルで修正することをお薦めします。 GitHubにあるAzure Quickstart Templatesは以下になります。 https://github.com/Azure/azure-quickstart-templates ⇒ 該当のjsonファイルを表示させている画面にて、rawのボタンをクリックすることで jsonファイルの中身だけを表示することができます。Linuxクライアントからcurlやwgetでローカルへ ダウンロードする際は、このrawボタンの先に出てくるURLを指定してダウンロードしてください。 !! Azure Quickstart Templatesを見ると、IaaS以外の様々なAzure機能がテンプレートで利用できることが わかります。是非、お求めのサービスをResource Group内で作成した場合は、テンプレートをエクスポート して確認してみてください。
  51. 51. 活用方法(copy) https://github.com/akkoike/ARMtemplate/blob/master/parts/storageaccount/loop-create-storageaccount.json コピーする記載方法は以下を参照ください。 ※ストレージアカウントをparametersで指定した数の分だけ作成する記載となります。 "resources": [ { "apiVersion": "2015-06-15", "type": "Microsoft.Storage/storageAccounts", "name": "[concat(parameters('storageAccounts_storage01_name'), copyindex())]", "location": "[resourceGroup().location]", "properties": { "accountType": "[parameters('teststorage01Type')]" }, "copy": { "name": "storagecopy", "count": "[parameters('count')]" } } ],
  52. 52. 52 今日からあなたはInfrastructure as Codeを実践されたエンジニアの一人です。 どんどん広げていきましょう!
  53. 53. 53
  54. 54. JSON: $schemaについて JSON内の1番上に記載されているschemaは以下の規定に沿っています。 https://github.com/Azure/azure-resource-manager-schemas/tree/master/schemas つまり新サービスや新機能をtemplateから利用する場合、どのスキーマバージョンを指定することで 利用できるか否かが決まります。 古い日付のスキーマをしている場合、最近でたサービスをtemplateで記載するとエラーになる原因は この新しいスキーマを定義してあげると解決する場合があります。
  55. 55. 同じJSON定義を何度も使いまわす場合 同一リソースグループ名を使い、何度も同じJSONファイルをデプロイしているとエラーが 出る時があります。(エラーメッセージもはっきりとした原因がわからず、ただエラーと表記される場合) システム障害の可能性もゼロではありませんが、大抵はvhdファイルとしてJSONが記載している URIの指定が固定になっており、このvhdファイルがまだ削除されていない状態でデプロイしようとした時に 発生します。 少し待つか、Azure Storage Explorerなどのツールを使い、前回作成したvhdファイルが削除されているかを ご確認してから再度デプロイを試してください。 ※Resource Groupを削除してもvhdファイルの削除が非同期処理で終わっていない場合があります。 ARMのエラーコード一覧とトラブルシューティングについては以下に記載されています。 https://docs.microsoft.com/ja-jp/azure/azure-resource-manager/resource-manager-common-deployment-errors
  56. 56. テンプレートのタイムアウト ARM templateはデプロイしてから完了するまでのタイムアウト時間が40分となります。 40分間に処理できなかった場合は、デプロイ途中で強制停止となりロールバックする概念もありません。 複数台リソースを用意する場合はテンプレートを分けて実施するなど工夫が必要です。 単一リソースに時間がかかるものとしてはVPN gateway(約20分)やApplication gateway(約15分)など があり、これらのリソースを2式以上テンプレートで記載するとタイムアウトで失敗する可能性が高くなります。
  57. 57. リンク集 ※日本語ドキュメントがほとんど揃っておらず、ほとんど英語ドキュメントとなっております。 〇各azureサービスで利用できる項目や型等のリファレンス https://docs.microsoft.com/ja-jp/rest/api/compute/ 〇$schemaバージョンの確認 https://github.com/Azure/azure-resource-manager-schemas/tree/master/schemas 〇利用できる関数 https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions 〇ARM template visualizer http://armviz.io/ ※閲覧できるブラウザに制限があります。chromeやMicrosoft Edgeで閲覧ください。 〇Azure Resource Explorer (サインインしてResourceGroup事のtemplatを管理できます) https://resources.azure.com 〇Azure Quickstart Templates https://github.com/Azure/azure-quickstart-templates
  58. 58. 58  本書に記載した情報は、本書各項目に関する発行日現在の Microsoft の見解を表明するものです。Microsoftは絶えず変化する市場に対応しなければならないため、ここに記載した情報に対していかなる責務を負うものではなく、 提示された情報の信憑性については保証できません。  本書は情報提供のみを目的としています。 Microsoft は、明示的または暗示的を問わず、本書にいかなる保証も与えるものではありません。  すべての当該著作権法を遵守することはお客様の責務です。Microsoftの書面による明確な許可なく、本書の如何なる部分についても、転載や検索システムへの格納または挿入を行うことは、どのような形式または手段(電子的、 機械的、複写、レコーディング、その他)、および目的であっても禁じられています。 これらは著作権保護された権利を制限するものではありません。  Microsoftは、本書の内容を保護する特許、特許出願書、商標、著作権、またはその他の知的財産権を保有する場合があります。Microsoftから書面によるライセンス契約が明確に供給される場合を除いて、本書の提供はこれら の特許、商標、著作権、またはその他の知的財産へのライセンスを与えるものではありません。 © 2016 Microsoft Corporation. All rights reserved. Microsoft, Windows, その他本文中に登場した各製品名は、Microsoft Corporation の米国およびその他の国における登録商標または商標です。 その他、記載されている会社名および製品名は、一般に各社の商標です。

×