Azure Resource Manager テンプレート
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[クラウド・インフラ自動化]] > [[IaC (Infrastructure as...
--[[Azure]]
---[[Azure Resource Manager (ARM)]]
---[[FgCF (Financial-grade Cloud Fundamentals)]]
* 目次 [#ye466976]
#contents
*概要 [#dd860c08]
-ARMテンプレートとも。
-[[Azure]]では、主にARM テンプレートを利用して、~
インフラ~OS レイヤまでのインフラ構築の「自動化(IaC)」...
--[[リソース>Azure Resource Manager (ARM)#c500a780]]を一...
--[[リソース・グループ>Azure Resource Manager (ARM)#f9664...
--デプロイ対象[[リソース>Azure Resource Manager (ARM)#c50...
*詳細 [#z44cef64]
**機能 [#p9ee71fc]
***入力 [#p3c360d2]
Resource Manager はテンプレートを解析し、~
その構文を適切な[[リソース・プロバイダ>Azure Resource Man...
***出力 [#h8a9e179]
既存の[[リソース・グループ>Azure Resource Manager (ARM)#f...
-[[リソース・グループ>Azure Resource Manager (ARM)#f96640...
-特定のデプロイに使用されたテンプレートを表示
**構造 [#j5bde1e7]
ARMテンプレートとパラメタ・ファイルから構成される
***ARMテンプレート [#e07a645e]
作成するリソース群を指定する(template.json)。
***ARMパラメタ・ファイル [#udf232a1]
-可変要素をパラメタ化する(parameters.json)。
-テンプレート実行時に外部から値を与える。
**編集と実行 [#mf1aa24e]
***編集 [#o2b381e1]
[[Visual Studio Code]] に ARM Tools プラグインを入れ編集。
***実行 [#jd78faf1]
Azureポータルから保存・実行すると便利。
※ ローカルで実行するには、PowerShellライブラリのインスト...
*作り方 [#h519dc16]
**Automation [#c1249dd8]
-スクラッチで記載するのは難しいので、~
Automationオプション、Automationスクリプトを使用する。
-リソースの作成前 or 作成後でやり方が変わってくる。
--リソース作成時にテンプレートを引き抜く。~
ポータルからのリソース作成時に、Automationオプションを確認
--リソース作成後にテンプレートを引き抜く。~
[[リソース・グループ>Azure Resource Manager (ARM)#f966401...
-以下のトレード・オフがあるので、~
2つの方法を併用して作成する。
||Automationオプション&br;リソース作成時にテンプレートを...
|GOOD|綺麗な JSON が入手できる|合体(依存関係アリ、構成変...
|BAD|・一部の新しいリソースでサポートされていない。&br;・...
**サンプル・シナリオ [#p24371c3]
ハブネットワークの ARMテンプレート作成
-[[仮想ネットワークの作成>#c0d17073]]
-[[サブネットの作成>#t4c9f01a]]
-[[ルート・テーブル(UDR)の作成>#x13c3711]]
-[[VPN Gatewayの作成>#me590a04]]
-[[Azure Firewallの設定>#a26efe1b]]
-[[診断ログ・ストレージの作成>#m34c7dce]]
-[[仮想マシン>Azureの仮想マシン]]の作成[[1>#f943a09c]]、...
※ 以下、サンプル・シナリオの[[手順>#jbff77a2]]
**手順 [#jbff77a2]
***[[仮想ネットワーク>Azureの仮想ネットワーク]]の作成 [#c...
リソース作成時のテンプレート引き抜き機能を使用する。
-ポータル上で[[仮想ネットワーク>Azureの仮想ネットワーク]]...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-テンプレートに、[[基本的な修正>#r98079fc]]を施す。
-テンプレートの修正後、実際にリソースを作成する。
--作成したテンプレートを Azure ポータルから登録し、展開を...
--記述にバグがある場合には配置が失敗する → [[配置が成功す...
***サブネットの作成 [#t4c9f01a]
既存リソースから、リソース作成後のテンプレート引き抜き機...
(作成時は引き抜き不可であるため)
-先ず、ポータル上でサブネットを3つ構成する([[仮想ネット...
--管理VM用
--DNS等配置用
--Gateway用
-作成後に、Automationスクリプトを選択すると、~
当該リソースが含まれる[[リソース・グループ>Azure Resource...
ARMテンプレートとパラメタ・ファイルに引き抜く。
-Automationスクリプトの特徴。
--[[リソース・グループ>Azure Resource Manager (ARM)#f9664...
--既定値や、現在の状態など、余分なパラメタ値が引き抜かれ...
--サブ・リソースが独立したリソースとして展開される。
---このため、全体的に冗長になる。
---また、依存関係が展開先に変更される。
-Automationスクリプトをテンプレートにマージする。
--[[コチラのテンプレート>#c0d17073]]をベースに、Automatio...
展開されたリソース(サブネット)は、([[仮想ネットワーク>...
---ココでは、サービス・エンドポイントの定義が追加されてい...
---既定値や、現在の状態など、GUIから設定していない余分な...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***ルート・テーブル([[UDR>Azureの仮想ネットワーク#e8a3a7...
同様に、既存リソースから、リソース作成後のテンプレート引...
(リソース依存関係の指定がポイント)
-ポータル上でルート・テーブル([[UDR>Azureの仮想ネットワ...
-Automationオプションを確認する(依存関係ナシ、構成変更前...
-上記のルート・テーブルをポータル上で実際に作成し、
-Automationスクリプトを生成する(依存関係アリ、構成変更後...
-Automationスクリプトを確認する。
--ルート・テーブルとルートが生成され、関連付けは、サブネ...
--ルート・テーブルのサブ・リソースのルートが展開され、重...
>※ [[前段階>#t4c9f01a]]のAutomationスクリプトとDiffを取る...
-Automationスクリプトをテンプレートにマージする。
--ベースのテンプレートに新規リソースとサブ・リソースの定...
---ルート・テーブルとルートの作成の定義
---サブネットに追加されたルート・テーブル割当の定義
--依存関係を分析して、依存関係を設定し直す。~
依存関係設定は、親同士の依存関係に置き換えると良い。
---「サブネット → ルート・テーブル」の依存関係を、
---「[[仮想ネットワーク>Azureの仮想ネットワーク]] → ルー...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***[[VPN Gateway]]の作成 [#me590a04]
再び、リソース作成時のテンプレート引き抜き機能を使用する。~
(テンプレートに含めるリソースの範囲がポイント)
-ポータル上でGateway用サブネットに、~
[[VPN Gateway]](+パブリックIP)を構成する。~
(対向ネットワークが無いと設定できない所は構成しない等)
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--リソース作成後のテンプレート引き抜き機能を使用した後に、~
リソース作成時のテンプレート引き抜き機能を使用する場合、~
(既にあるリソースが前提になっているので)~
以下の様に依存関係の修正が必要になることがある。
---定義にリソースを識別する固定値のIDが使用されている場合...
resourceId関数を使用した動的解決が必要になることがある。
---また、依存関係設定は、親同士の依存関係に置き換えると良...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***[[Azure Firewall]]の設定 [#a26efe1b]
%%既存リソースからのテンプレート引き抜き機能に対応してい...
現時点では、上記の引き抜き機能が実装された。~
(されていない場合は、リファレンス頼りになる)
-ポータル上で[[Azure Firewall]]に以下を構成する。
--Windows Update
--[[DNSクエリ>DNSサーバ]]
-上記をポータル上で実際に適用し、~
-Automationスクリプトを生成・確認する。
-Automationスクリプトをテンプレートにマージする。
--[[Azure Firewall]]の、propertiesの、~
xxxxxRuleCollectionsをテンプレートにマージする。
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***[[診断ログ>Azureの監視と管理#lf757ca0]]・ストレージの...
再び、リソース作成時のテンプレート引き抜き機能を使用する。~
(グローバル一意リソースが存在するケース)
-ポータル上で[[ストレージ・アカウント>Azureのストレージ#t...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--[[ストレージ・アカウント>Azureのストレージ#t36c3007]]の...
---virtualNetworkRulesのサブネットの固定値のIDをresourceI...
---[[コチラ>#t4c9f01a]]の段階で、サブネットにサービスエン...
---そして、(サブネットではなく)[[仮想ネットワーク>Azure...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。~
(この際、グローバル一意リソース用の変数入力が求められる)
***[[仮想マシン>Azureの仮想マシン]]の作成1 [#f943a09c]
管理VM用サブネットに管理用の[[仮想マシン>Azureの仮想マシ...
-リソース作成時のテンプレート引き抜き機能と
-リソース作成後のテンプレート引き抜き機能とを
併用する(そして、評価式の修正のコツがポイント)。
-ポータル上で[[仮想マシン>Azureの仮想マシン]]を構成する。
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
--[[仮想マシン>Azureの仮想マシン]]は、多数のリソースから...
---NIC
---[[NSG>Network Security Group (NSG)]]
---パブリックIP
---[[仮想マシン>Azureの仮想マシン]]
--また、各リソース間に依存関係もある。
---NIC → ([[NSG>Network Security Group (NSG)]]、パブリッ...
---[[NSG>Network Security Group (NSG)]] → (-)
---パブリックIP → (-)
---[[仮想マシン>Azureの仮想マシン]] → (NIC)
-Automationオプションをテンプレートにマージする。
--パスワードは、グローバル一意リソース同様、~
parametersセクションに変数を追加する(が、型はsecureStrin...
--parametersセクションに変数の加工が必要な場合、variables...
>variablesを使用しないように展開すると、この中に動的解決...
この値をresourceIdで動的解決する(NICが利用するサブネット...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-上記の[[仮想マシン>Azureの仮想マシン]]をポータル上で実際...
-Automationスクリプトを生成・確認する。~
すると、追加で以下の依存関係が確認できる。
--NIC → (サブネット)
--[[仮想マシン>Azureの仮想マシン]] → ([[ストレージ・アカ...
-Automationスクリプトをテンプレートにマージする。
--上記の依存関係を追加するが、同様に、~
親同士の依存関係に置き換えると良い(サブネット → [[仮想ネ...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。~
(この際、グローバル一意リソース用の変数入力が求められる)
***[[仮想マシン>Azureの仮想マシン]]の作成2 [#x08bbc78]
DNS等配置用サブネットにDNSサーバ用の[[仮想マシン>Azureの...
冗長化のタメに[[可用性セット>Azureの冗長化#gebb4e38]]に2...
この場合、1台作成してコピペで増やすという方法が採れる。
-先ず、ポータル上で[[可用性セット>Azureの冗長化#gebb4e38]...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--[[可用性セット>Azureの冗長化#gebb4e38]]をマージ。
--テンプレートに、[[基本的な修正>#r98079fc]]を施す。
-上記の[[可用性セット>Azureの冗長化#gebb4e38]]をポータル...
-更に、ポータル上で当該 [[可用性セット>Azureの冗長化#gebb...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--[[仮想マシン>Azureの仮想マシン]]を[[前述と同様の手順>#f...
--テンプレートに、[[基本的な修正>#r98079fc]]を施す。
-上記の[[仮想マシン>Azureの仮想マシン]]をポータル上で実際...
-Automationスクリプトを生成・確認する。~
すると、追加で以下の依存関係が確認できる。
--NIC → (サブネット)
--[[仮想マシン>Azureの仮想マシン]] → ([[ストレージ・アカ...
-Automationスクリプトをテンプレートにマージする。
--上記の依存関係を[[前述と同様の手順>#f943a09c]]で追加。
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-最後に、[[仮想マシン>Azureの仮想マシン]]をコピペで増やし...
(アンチ・マルウェアなどを構成すると、VM名が含まれないリ...
-テンプレートの修正後、実際にリソースを作成する。~
(この際、グローバル一意リソース用の変数入力が求められる)
-更に、静的IPを構成して、追加のフィードバックを行う。
--Automationスクリプトを生成・確認する。
--スクリプトをテンプレートにDiff&マージ。
--静的IPはNICのコンフィギュレーションらしい。
**ポイントのまとめ [#i40a179d]
[[Automation>#c1249dd8]]を使用してテンプレートを作成する...
***基本的な修正 [#r98079fc]
何れの場合も、以下の、基本的な修正を施す。
-テンプレート内のパラメタ値の具体値化を行う。
--template.jsonのresourcesセクションの"[parameters('XXXX'...
parameters.jsonのparametersセクションの具体値に変える。
--具体値に変えた、template.jsonのparametersセクションのパ...
-既定でGUIからの入力を使用するパラメタの動的値化を行う。
--[[リソース・グループ>Azure Resource Manager (ARM)#f9664...
--"[parameters('XXXX')]"だった所を"[resourceGroup().XXXX]...
(これでテンプレートを実行する際に与えられるパラメタを使...
-冗長なconcat関数は文字列にしてしまう。
***ユーザ入力を反映する場合 [#w08476cd]
グローバル一意リソースが存在する場合などのケースで利用す...
-parametersセクションを使用すると、~
実行時にユーザ入力を反映できる。
--parametersセクションに変数を追加する。
"parameters": {
"virtualDataCenterId": {
"type": "string",
"defaultValue": ""
}
},
--グローバル一意リソース名などに(文字列連結で)反映する。
"name": "[concat('xxxxxx', parameters('virtualDataCente...
-variablesセクションを使用すると、~
parametersセクションの変数を加工できる。
--variablesセクションに変数を追加しparametersを加工する。
"variables": {
"diagnosticsStorageAccountName": "[concat('azrefarchub...
},
--グローバル一意リソース名などにvariablesを使用する。
"name": "[variables('diagnosticsStorageAccountName'))]",
***テンプレートの新規作成 [#acf902ad]
[[仮想ネットワーク>Azureの仮想ネットワーク]]作成時、~
リソース作成時のテンプレート引き抜き機能を使用して、~
テンプレートを新規作成。
***テンプレートへのマージ [#p09bc07e]
-以降、基本的には、既存リソースから、~
リソース作成後のテンプレート引き抜き機能を使用して、~
Automationスクリプトをテンプレートにマージ。
--展開されたリソースはマージせず、
--サブ・リソースのみをテンプレートにマージする。
--[[同様に、依存関係を分析して、依存関係を設定し直す。>#o...
-再び、リソース作成時のテンプレート引き抜き機能を使用して...
Automationオプションをテンプレートにマージする場合、
--[[同様に、依存関係を分析して、依存関係を設定し直す。>#o...
※ [[仮想マシン>Azureの仮想マシン]]等では、上記2つの方法...
***依存関係の分析と設定 [#o75c6ba6]
-依存関係設定
--基本的に、サブ・リソースは使用せず、~
親同士の依存関係に置き換えると良い。
--再び、Automationオプションを使用する場合、~
(既にあるリソースが前提になっているので)依存関係の修正...
---定義にリソースを識別する固定値のIDが使用されている場合...
resourceId関数を使用した動的解決が必要になることがある。
---また、依存関係設定は、親同士の依存関係に置き換えると良...
-dependsOnのIDの書き方~
文字列と関数の2種類あり、文字列を使用する方法では、~
簡便な記述ができるようになっているが、指定が曖昧になり易...
--文字列:"Microsoft.Network/virtualNetworks/azrefarc-hub...
--関数:"[resourceId(resourceGroup().name, 'Microsoft.Net...
***配置が成功するまで、trial and error。 [#id9cc917]
-[[リソース・グループ>Azure Resource Manager (ARM)#f96640...
--並行展開が可能で素早く作業をすすめることが出来る。
--だだし、課金がされるので、並行して[[リソース・グループ>...
-テンプレートが複雑、展開に時間のかかる~
リソースは最後にテンプレに追加するようにする。
--[[VPN Gatewayの作成>#me590a04]]
--[[仮想マシン>Azureの仮想マシン]]の作成[[1>#f943a09c]]...
---JSON 定義がかなり大きなサイズになる。
---[[仮想ネットワーク>Azureの仮想ネットワーク]]、サブネッ...
***テンプレート化は構成が確定してから。 [#vebfde87]
-そもそもクラウドのインフラ構築は、~
「trial and error」な所があるため、~
序盤に着手すると手戻りが大きくなる可能性がある。
-故に、構築の序盤にはポータルを使用し、~
熟れてから、テンプレート化を開始するようにする。
*参考 [#o2690f57]
-Azure Resource Manager テンプレート入門と作成 | ブログ一...
https://datumstudio.jp/blog/azure-resource-manager-%E3%83...
**Microsoft Azure [#y9bcdbb0]
-Azure Resource Manager テンプレート~
https://azure.microsoft.com/ja-jp/services/arm-templates/
**Microsoft Docs [#te7919bf]
-Azure Resource Manager
--テンプレートの概要~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
--テンプレートをデプロイする - Azure portal~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
--テンプレートのベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
--テンプレートの構造と構文~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
-Azure Virtual Machines
--クイック スタート:Resource Manager テンプレートを使用し...
https://docs.microsoft.com/ja-jp/azure/virtual-machines/w...
--クイック スタート:Resource Manager テンプレートを使用し...
https://docs.microsoft.com/ja-jp/azure/virtual-machines/l...
**Qiita [#wd81ee03]
-ARMTemplateデプロイ用のJsonをイジる~
https://qiita.com/sat0tabe/items/7d268d140aa849fbb665
-AzureのARMテンプレートを理解する
--part1 (基本編)~
https://qiita.com/j-tsurumi/items/cc86e9412349da80a323
--part2 (ネットワークリソース編)~
https://qiita.com/j-tsurumi/items/d7e9eda9da223764a799
-Azure Resource Manager テンプレートを
--使用した仮想マシンのデプロイ~
https://qiita.com/yuki451/items/9a6bfc0e544cdcc32788
--使用した自動シャットダウンの設定~
https://qiita.com/yuki451/items/347cac19e6a76455edb6
--使う複数のパラメーターをまとめてデプロイする PowerShell...
https://qiita.com/yuki451/items/d8b1e5c9b8de8e9f2462
-ARMTemplateでAzureDNSのリソース作成とレコードを設定する(...
https://qiita.com/HiroyukiSakoh/items/6d3538303bbc310dd59f
-Azure Function v2にHttpClientFactory+Polly~
を組み込み、HttpClientの再試行を実装する~
https://qiita.com/HiroyukiSakoh/items/92d1365db6447bd64550
**nakama [#gc82c333]
FgCF > ゼロトラスト型マルチクラウド IT 環境 > Azure によ...
'> 共通技術 > ネットワーク基盤の構成方法 > ARM テンプレー...
-YouTube~
--前半:https://www.youtube.com/watch?v=Hi4Xh8O10W8
--後半:https://www.youtube.com/watch?v=aLLFJVcHY70
-video、ppt~
https://nakama.blob.core.windows.net/mskk/2019_01_03_Prac...
※ 体系は[[コチラ>FgCF (Financial-grade Cloud Fundamentals...
**SIOS Tech. Lab [#a84cca94]
-Azure CLIからARMテンプレートを利用してUbuntuをデプロイす...
https://tech-lab.sios.jp/archives/2975
----
Tags: [[:インフラストラクチャ]], [[:クラウド]], [[:セキュ...
終了行:
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicros...
-戻る
--[[クラウド・インフラ自動化]] > [[IaC (Infrastructure as...
--[[Azure]]
---[[Azure Resource Manager (ARM)]]
---[[FgCF (Financial-grade Cloud Fundamentals)]]
* 目次 [#ye466976]
#contents
*概要 [#dd860c08]
-ARMテンプレートとも。
-[[Azure]]では、主にARM テンプレートを利用して、~
インフラ~OS レイヤまでのインフラ構築の「自動化(IaC)」...
--[[リソース>Azure Resource Manager (ARM)#c500a780]]を一...
--[[リソース・グループ>Azure Resource Manager (ARM)#f9664...
--デプロイ対象[[リソース>Azure Resource Manager (ARM)#c50...
*詳細 [#z44cef64]
**機能 [#p9ee71fc]
***入力 [#p3c360d2]
Resource Manager はテンプレートを解析し、~
その構文を適切な[[リソース・プロバイダ>Azure Resource Man...
***出力 [#h8a9e179]
既存の[[リソース・グループ>Azure Resource Manager (ARM)#f...
-[[リソース・グループ>Azure Resource Manager (ARM)#f96640...
-特定のデプロイに使用されたテンプレートを表示
**構造 [#j5bde1e7]
ARMテンプレートとパラメタ・ファイルから構成される
***ARMテンプレート [#e07a645e]
作成するリソース群を指定する(template.json)。
***ARMパラメタ・ファイル [#udf232a1]
-可変要素をパラメタ化する(parameters.json)。
-テンプレート実行時に外部から値を与える。
**編集と実行 [#mf1aa24e]
***編集 [#o2b381e1]
[[Visual Studio Code]] に ARM Tools プラグインを入れ編集。
***実行 [#jd78faf1]
Azureポータルから保存・実行すると便利。
※ ローカルで実行するには、PowerShellライブラリのインスト...
*作り方 [#h519dc16]
**Automation [#c1249dd8]
-スクラッチで記載するのは難しいので、~
Automationオプション、Automationスクリプトを使用する。
-リソースの作成前 or 作成後でやり方が変わってくる。
--リソース作成時にテンプレートを引き抜く。~
ポータルからのリソース作成時に、Automationオプションを確認
--リソース作成後にテンプレートを引き抜く。~
[[リソース・グループ>Azure Resource Manager (ARM)#f966401...
-以下のトレード・オフがあるので、~
2つの方法を併用して作成する。
||Automationオプション&br;リソース作成時にテンプレートを...
|GOOD|綺麗な JSON が入手できる|合体(依存関係アリ、構成変...
|BAD|・一部の新しいリソースでサポートされていない。&br;・...
**サンプル・シナリオ [#p24371c3]
ハブネットワークの ARMテンプレート作成
-[[仮想ネットワークの作成>#c0d17073]]
-[[サブネットの作成>#t4c9f01a]]
-[[ルート・テーブル(UDR)の作成>#x13c3711]]
-[[VPN Gatewayの作成>#me590a04]]
-[[Azure Firewallの設定>#a26efe1b]]
-[[診断ログ・ストレージの作成>#m34c7dce]]
-[[仮想マシン>Azureの仮想マシン]]の作成[[1>#f943a09c]]、...
※ 以下、サンプル・シナリオの[[手順>#jbff77a2]]
**手順 [#jbff77a2]
***[[仮想ネットワーク>Azureの仮想ネットワーク]]の作成 [#c...
リソース作成時のテンプレート引き抜き機能を使用する。
-ポータル上で[[仮想ネットワーク>Azureの仮想ネットワーク]]...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-テンプレートに、[[基本的な修正>#r98079fc]]を施す。
-テンプレートの修正後、実際にリソースを作成する。
--作成したテンプレートを Azure ポータルから登録し、展開を...
--記述にバグがある場合には配置が失敗する → [[配置が成功す...
***サブネットの作成 [#t4c9f01a]
既存リソースから、リソース作成後のテンプレート引き抜き機...
(作成時は引き抜き不可であるため)
-先ず、ポータル上でサブネットを3つ構成する([[仮想ネット...
--管理VM用
--DNS等配置用
--Gateway用
-作成後に、Automationスクリプトを選択すると、~
当該リソースが含まれる[[リソース・グループ>Azure Resource...
ARMテンプレートとパラメタ・ファイルに引き抜く。
-Automationスクリプトの特徴。
--[[リソース・グループ>Azure Resource Manager (ARM)#f9664...
--既定値や、現在の状態など、余分なパラメタ値が引き抜かれ...
--サブ・リソースが独立したリソースとして展開される。
---このため、全体的に冗長になる。
---また、依存関係が展開先に変更される。
-Automationスクリプトをテンプレートにマージする。
--[[コチラのテンプレート>#c0d17073]]をベースに、Automatio...
展開されたリソース(サブネット)は、([[仮想ネットワーク>...
---ココでは、サービス・エンドポイントの定義が追加されてい...
---既定値や、現在の状態など、GUIから設定していない余分な...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***ルート・テーブル([[UDR>Azureの仮想ネットワーク#e8a3a7...
同様に、既存リソースから、リソース作成後のテンプレート引...
(リソース依存関係の指定がポイント)
-ポータル上でルート・テーブル([[UDR>Azureの仮想ネットワ...
-Automationオプションを確認する(依存関係ナシ、構成変更前...
-上記のルート・テーブルをポータル上で実際に作成し、
-Automationスクリプトを生成する(依存関係アリ、構成変更後...
-Automationスクリプトを確認する。
--ルート・テーブルとルートが生成され、関連付けは、サブネ...
--ルート・テーブルのサブ・リソースのルートが展開され、重...
>※ [[前段階>#t4c9f01a]]のAutomationスクリプトとDiffを取る...
-Automationスクリプトをテンプレートにマージする。
--ベースのテンプレートに新規リソースとサブ・リソースの定...
---ルート・テーブルとルートの作成の定義
---サブネットに追加されたルート・テーブル割当の定義
--依存関係を分析して、依存関係を設定し直す。~
依存関係設定は、親同士の依存関係に置き換えると良い。
---「サブネット → ルート・テーブル」の依存関係を、
---「[[仮想ネットワーク>Azureの仮想ネットワーク]] → ルー...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***[[VPN Gateway]]の作成 [#me590a04]
再び、リソース作成時のテンプレート引き抜き機能を使用する。~
(テンプレートに含めるリソースの範囲がポイント)
-ポータル上でGateway用サブネットに、~
[[VPN Gateway]](+パブリックIP)を構成する。~
(対向ネットワークが無いと設定できない所は構成しない等)
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--リソース作成後のテンプレート引き抜き機能を使用した後に、~
リソース作成時のテンプレート引き抜き機能を使用する場合、~
(既にあるリソースが前提になっているので)~
以下の様に依存関係の修正が必要になることがある。
---定義にリソースを識別する固定値のIDが使用されている場合...
resourceId関数を使用した動的解決が必要になることがある。
---また、依存関係設定は、親同士の依存関係に置き換えると良...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***[[Azure Firewall]]の設定 [#a26efe1b]
%%既存リソースからのテンプレート引き抜き機能に対応してい...
現時点では、上記の引き抜き機能が実装された。~
(されていない場合は、リファレンス頼りになる)
-ポータル上で[[Azure Firewall]]に以下を構成する。
--Windows Update
--[[DNSクエリ>DNSサーバ]]
-上記をポータル上で実際に適用し、~
-Automationスクリプトを生成・確認する。
-Automationスクリプトをテンプレートにマージする。
--[[Azure Firewall]]の、propertiesの、~
xxxxxRuleCollectionsをテンプレートにマージする。
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。
***[[診断ログ>Azureの監視と管理#lf757ca0]]・ストレージの...
再び、リソース作成時のテンプレート引き抜き機能を使用する。~
(グローバル一意リソースが存在するケース)
-ポータル上で[[ストレージ・アカウント>Azureのストレージ#t...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--[[ストレージ・アカウント>Azureのストレージ#t36c3007]]の...
---virtualNetworkRulesのサブネットの固定値のIDをresourceI...
---[[コチラ>#t4c9f01a]]の段階で、サブネットにサービスエン...
---そして、(サブネットではなく)[[仮想ネットワーク>Azure...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。~
(この際、グローバル一意リソース用の変数入力が求められる)
***[[仮想マシン>Azureの仮想マシン]]の作成1 [#f943a09c]
管理VM用サブネットに管理用の[[仮想マシン>Azureの仮想マシ...
-リソース作成時のテンプレート引き抜き機能と
-リソース作成後のテンプレート引き抜き機能とを
併用する(そして、評価式の修正のコツがポイント)。
-ポータル上で[[仮想マシン>Azureの仮想マシン]]を構成する。
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
--[[仮想マシン>Azureの仮想マシン]]は、多数のリソースから...
---NIC
---[[NSG>Network Security Group (NSG)]]
---パブリックIP
---[[仮想マシン>Azureの仮想マシン]]
--また、各リソース間に依存関係もある。
---NIC → ([[NSG>Network Security Group (NSG)]]、パブリッ...
---[[NSG>Network Security Group (NSG)]] → (-)
---パブリックIP → (-)
---[[仮想マシン>Azureの仮想マシン]] → (NIC)
-Automationオプションをテンプレートにマージする。
--パスワードは、グローバル一意リソース同様、~
parametersセクションに変数を追加する(が、型はsecureStrin...
--parametersセクションに変数の加工が必要な場合、variables...
>variablesを使用しないように展開すると、この中に動的解決...
この値をresourceIdで動的解決する(NICが利用するサブネット...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-上記の[[仮想マシン>Azureの仮想マシン]]をポータル上で実際...
-Automationスクリプトを生成・確認する。~
すると、追加で以下の依存関係が確認できる。
--NIC → (サブネット)
--[[仮想マシン>Azureの仮想マシン]] → ([[ストレージ・アカ...
-Automationスクリプトをテンプレートにマージする。
--上記の依存関係を追加するが、同様に、~
親同士の依存関係に置き換えると良い(サブネット → [[仮想ネ...
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-テンプレートの修正後、実際にリソースを作成する。~
(この際、グローバル一意リソース用の変数入力が求められる)
***[[仮想マシン>Azureの仮想マシン]]の作成2 [#x08bbc78]
DNS等配置用サブネットにDNSサーバ用の[[仮想マシン>Azureの...
冗長化のタメに[[可用性セット>Azureの冗長化#gebb4e38]]に2...
この場合、1台作成してコピペで増やすという方法が採れる。
-先ず、ポータル上で[[可用性セット>Azureの冗長化#gebb4e38]...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--[[可用性セット>Azureの冗長化#gebb4e38]]をマージ。
--テンプレートに、[[基本的な修正>#r98079fc]]を施す。
-上記の[[可用性セット>Azureの冗長化#gebb4e38]]をポータル...
-更に、ポータル上で当該 [[可用性セット>Azureの冗長化#gebb...
-作成前に、Automationオプションを選択し、~
ARMテンプレートとパラメタ・ファイルを引き抜く。
-Automationオプションをテンプレートにマージする。
--[[仮想マシン>Azureの仮想マシン]]を[[前述と同様の手順>#f...
--テンプレートに、[[基本的な修正>#r98079fc]]を施す。
-上記の[[仮想マシン>Azureの仮想マシン]]をポータル上で実際...
-Automationスクリプトを生成・確認する。~
すると、追加で以下の依存関係が確認できる。
--NIC → (サブネット)
--[[仮想マシン>Azureの仮想マシン]] → ([[ストレージ・アカ...
-Automationスクリプトをテンプレートにマージする。
--上記の依存関係を[[前述と同様の手順>#f943a09c]]で追加。
--最後に、テンプレートに、[[基本的な修正>#r98079fc]]を施...
-最後に、[[仮想マシン>Azureの仮想マシン]]をコピペで増やし...
(アンチ・マルウェアなどを構成すると、VM名が含まれないリ...
-テンプレートの修正後、実際にリソースを作成する。~
(この際、グローバル一意リソース用の変数入力が求められる)
-更に、静的IPを構成して、追加のフィードバックを行う。
--Automationスクリプトを生成・確認する。
--スクリプトをテンプレートにDiff&マージ。
--静的IPはNICのコンフィギュレーションらしい。
**ポイントのまとめ [#i40a179d]
[[Automation>#c1249dd8]]を使用してテンプレートを作成する...
***基本的な修正 [#r98079fc]
何れの場合も、以下の、基本的な修正を施す。
-テンプレート内のパラメタ値の具体値化を行う。
--template.jsonのresourcesセクションの"[parameters('XXXX'...
parameters.jsonのparametersセクションの具体値に変える。
--具体値に変えた、template.jsonのparametersセクションのパ...
-既定でGUIからの入力を使用するパラメタの動的値化を行う。
--[[リソース・グループ>Azure Resource Manager (ARM)#f9664...
--"[parameters('XXXX')]"だった所を"[resourceGroup().XXXX]...
(これでテンプレートを実行する際に与えられるパラメタを使...
-冗長なconcat関数は文字列にしてしまう。
***ユーザ入力を反映する場合 [#w08476cd]
グローバル一意リソースが存在する場合などのケースで利用す...
-parametersセクションを使用すると、~
実行時にユーザ入力を反映できる。
--parametersセクションに変数を追加する。
"parameters": {
"virtualDataCenterId": {
"type": "string",
"defaultValue": ""
}
},
--グローバル一意リソース名などに(文字列連結で)反映する。
"name": "[concat('xxxxxx', parameters('virtualDataCente...
-variablesセクションを使用すると、~
parametersセクションの変数を加工できる。
--variablesセクションに変数を追加しparametersを加工する。
"variables": {
"diagnosticsStorageAccountName": "[concat('azrefarchub...
},
--グローバル一意リソース名などにvariablesを使用する。
"name": "[variables('diagnosticsStorageAccountName'))]",
***テンプレートの新規作成 [#acf902ad]
[[仮想ネットワーク>Azureの仮想ネットワーク]]作成時、~
リソース作成時のテンプレート引き抜き機能を使用して、~
テンプレートを新規作成。
***テンプレートへのマージ [#p09bc07e]
-以降、基本的には、既存リソースから、~
リソース作成後のテンプレート引き抜き機能を使用して、~
Automationスクリプトをテンプレートにマージ。
--展開されたリソースはマージせず、
--サブ・リソースのみをテンプレートにマージする。
--[[同様に、依存関係を分析して、依存関係を設定し直す。>#o...
-再び、リソース作成時のテンプレート引き抜き機能を使用して...
Automationオプションをテンプレートにマージする場合、
--[[同様に、依存関係を分析して、依存関係を設定し直す。>#o...
※ [[仮想マシン>Azureの仮想マシン]]等では、上記2つの方法...
***依存関係の分析と設定 [#o75c6ba6]
-依存関係設定
--基本的に、サブ・リソースは使用せず、~
親同士の依存関係に置き換えると良い。
--再び、Automationオプションを使用する場合、~
(既にあるリソースが前提になっているので)依存関係の修正...
---定義にリソースを識別する固定値のIDが使用されている場合...
resourceId関数を使用した動的解決が必要になることがある。
---また、依存関係設定は、親同士の依存関係に置き換えると良...
-dependsOnのIDの書き方~
文字列と関数の2種類あり、文字列を使用する方法では、~
簡便な記述ができるようになっているが、指定が曖昧になり易...
--文字列:"Microsoft.Network/virtualNetworks/azrefarc-hub...
--関数:"[resourceId(resourceGroup().name, 'Microsoft.Net...
***配置が成功するまで、trial and error。 [#id9cc917]
-[[リソース・グループ>Azure Resource Manager (ARM)#f96640...
--並行展開が可能で素早く作業をすすめることが出来る。
--だだし、課金がされるので、並行して[[リソース・グループ>...
-テンプレートが複雑、展開に時間のかかる~
リソースは最後にテンプレに追加するようにする。
--[[VPN Gatewayの作成>#me590a04]]
--[[仮想マシン>Azureの仮想マシン]]の作成[[1>#f943a09c]]...
---JSON 定義がかなり大きなサイズになる。
---[[仮想ネットワーク>Azureの仮想ネットワーク]]、サブネッ...
***テンプレート化は構成が確定してから。 [#vebfde87]
-そもそもクラウドのインフラ構築は、~
「trial and error」な所があるため、~
序盤に着手すると手戻りが大きくなる可能性がある。
-故に、構築の序盤にはポータルを使用し、~
熟れてから、テンプレート化を開始するようにする。
*参考 [#o2690f57]
-Azure Resource Manager テンプレート入門と作成 | ブログ一...
https://datumstudio.jp/blog/azure-resource-manager-%E3%83...
**Microsoft Azure [#y9bcdbb0]
-Azure Resource Manager テンプレート~
https://azure.microsoft.com/ja-jp/services/arm-templates/
**Microsoft Docs [#te7919bf]
-Azure Resource Manager
--テンプレートの概要~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
--テンプレートをデプロイする - Azure portal~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
--テンプレートのベスト プラクティス~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
--テンプレートの構造と構文~
https://docs.microsoft.com/ja-jp/azure/azure-resource-man...
-Azure Virtual Machines
--クイック スタート:Resource Manager テンプレートを使用し...
https://docs.microsoft.com/ja-jp/azure/virtual-machines/w...
--クイック スタート:Resource Manager テンプレートを使用し...
https://docs.microsoft.com/ja-jp/azure/virtual-machines/l...
**Qiita [#wd81ee03]
-ARMTemplateデプロイ用のJsonをイジる~
https://qiita.com/sat0tabe/items/7d268d140aa849fbb665
-AzureのARMテンプレートを理解する
--part1 (基本編)~
https://qiita.com/j-tsurumi/items/cc86e9412349da80a323
--part2 (ネットワークリソース編)~
https://qiita.com/j-tsurumi/items/d7e9eda9da223764a799
-Azure Resource Manager テンプレートを
--使用した仮想マシンのデプロイ~
https://qiita.com/yuki451/items/9a6bfc0e544cdcc32788
--使用した自動シャットダウンの設定~
https://qiita.com/yuki451/items/347cac19e6a76455edb6
--使う複数のパラメーターをまとめてデプロイする PowerShell...
https://qiita.com/yuki451/items/d8b1e5c9b8de8e9f2462
-ARMTemplateでAzureDNSのリソース作成とレコードを設定する(...
https://qiita.com/HiroyukiSakoh/items/6d3538303bbc310dd59f
-Azure Function v2にHttpClientFactory+Polly~
を組み込み、HttpClientの再試行を実装する~
https://qiita.com/HiroyukiSakoh/items/92d1365db6447bd64550
**nakama [#gc82c333]
FgCF > ゼロトラスト型マルチクラウド IT 環境 > Azure によ...
'> 共通技術 > ネットワーク基盤の構成方法 > ARM テンプレー...
-YouTube~
--前半:https://www.youtube.com/watch?v=Hi4Xh8O10W8
--後半:https://www.youtube.com/watch?v=aLLFJVcHY70
-video、ppt~
https://nakama.blob.core.windows.net/mskk/2019_01_03_Prac...
※ 体系は[[コチラ>FgCF (Financial-grade Cloud Fundamentals...
**SIOS Tech. Lab [#a84cca94]
-Azure CLIからARMテンプレートを利用してUbuntuをデプロイす...
https://tech-lab.sios.jp/archives/2975
----
Tags: [[:インフラストラクチャ]], [[:クラウド]], [[:セキュ...
ページ名: