LoginSignup
2
2

Bicepのパラメーターファイルを使ってVPN gatewayをデプロイする

Posted at

こんにちは。
前回に引き続きBicep の記事です。
前はパラメーターをベタ打ちしてデプロイしました。
Bicep ではテンプレートファイルとは別にパラメーターファイルを作成して、デプロイ時に使用することができます。これによって、デプロイごとにパラメーターを変更することが容易になるというわけです。

今回は、前回とまったく同じVPN gatewayのデプロイを、パラメーターを分離して行う方法を試してみます。
Azure PowerShell を使用します。

作業

まず、到達地点としては、Azure PowerShell のコマンドに、作成したテンプレートファイルとパラメーターファイルを渡すことです。公式DOCはこちら

New-AzResourceGroupDeployment `
-TemplateFile C:\\xxxx
-TemplateParameterFile C:\\xxx

TemplateFile にはBicep で書いたテンプレートファイル、TemplateParameterFile には今回作成するJSON パラメーターファイルのパスを入力します。

前回の使いまわし

前回のテンプレートファイルを使いまわします。ベタ打ちしたパラメーターはコメントアウトしておきましょう。前回の記事はこちら
Bicep では、// や/* */ をコメントアウトに使用することができます。

1行ごとにコメントアウトしたいときは、// を使うとこれの後ろがコメントアウトされる
まとめてしたいときは/* と*/ で挟んだ部分がコメントアウトされる

前回のテンプレートファイルでいうと、こんな感じになるでしょう。
image.png
デフォルトのサブネットとか仮想マシン、と書いてある部分は今回には無関係ですのでコメントアウトしました。

パラメーターファイルの作成

さて本題です。
パラメーターファイルはJSON で書きます。テンプレートファイルには10 個のパラメーターがあるので、すべて定義していきます。ベタ打ちしていたパラメーターをキーとバリューとして列挙するだけです。

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
        "value": "japaneast"
    },
    "publicIPName": {
        "value": "pip-vpngw"
    },
    "publicIpsku":{
        "value": "Standard"
    },
    "VNetName" :{
        "value": "vnet-hub"
    },
    "VNetAddress" :{
        "value": "10.0.0.0/16"
    },
    "gatewaysubnetAddress" :{
        "value": "10.0.255.0/24"
    },
    "vpngwName" :{
        "value": "vpngw"
    },
    "vpngwSKU" :{
        "value": "Vpngw1"
    }
    }
}

$schema とか contentVersion の部分は、Azure Resource Manager の窓口の住所のようなものを示していて、デプロイしたいリソースの情報(ポータルでもテンプレートファイルでも)を渡すとよしなにしてくれるものです。たぶん。よく理解していません。

上のファイルの名前を"vpngw.parameters.dev.json"として保存します。

さあデプロイ

まだリソースグループがデプロイされていないのでポータルで作成してください。(Bicep によるリソースグループのデプロイは、次の次くらいの記事で書く予定です)
あとは流れでお願いします。

connect-AzAccount
new-AzResourceGroupDeployment -TemplateFile vpngw.bicep -TemplateParameterFile vpngw.parameters.dev.json

image.png
デプロイが進行しています。
例のごとくVPN gateway には時間がかかるのでシャツにアイロンでもかけます。

image.png
デプロイ完了です。5,6 枚くらいですかね

仮想ネットワークがどうなっているか見てみましょう。
image.png
設定した通りのアドレス空間でサブネットの名前が与えられていますね。うまくいっているようです。

今回は、テンプレートファイルとは別に、パラメーターファイルを用意して、デプロイしました。
お疲れさまでした。

出くわしたエラー

New-AzResourceGroupDeployment: 12:38:59 - Error: Code=ResourceGroupNotFound; Message=Resource group 'bicep-wakeru' could not be found.
New-AzResourceGroupDeployment: The deployment validation failed

サブスクリプションのターゲットが間違っていたことによるエラー
対処するには

get-AzSubscription

で正しいサブスクリプションのID を見つけて、続いて

set-azcontext -subscription [subscription ID]

でターゲットを変更します。


New-AzResourceGroupDeployment: 12:44:47 - Error: Code=InvalidTemplate; Message=Deployment template validation failed: 'The following parameters were supplied, but do not correspond to any parameters defined in the template: 'subnetAddress, vpngwAddress, subnetName'. The parameters defined in the template are: 'publicIPName, location, publicIpsku, VNetName, VNetAddress, gatewaysubnetName, gatewaysubnetAddress, vpngwName, vpngwSKU, activeactive'. Please see https://aka.ms/arm-pass-parameter-values for usage details.'.
New-AzResourceGroupDeployment: The deployment validation failed

テンプレートファイルのパラメーターが、パラメーターに見つかりませんというエラー。
コメントアウトしたデフォルトのサブネットにつけるパラメーターを入れたままだった。
他には大文字と小文字が違って認識されなかったとか。
なお、JSON にはコメントアウトがないので消すしかないです。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2