問題タブ [azure-template]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
json - テンプレートからランブックにハッシュテーブル/オブジェクトを渡す方法
テンプレートとそれに付随するランブックを作成しました。テンプレートは Runbook をトリガーします。Runbook のパラメーターの 1 つにオブジェクトを渡そうとするまで、テンプレートと Runbook は正常に動作しています。Azure エラーは次のとおりです。
エラー
が何を意味するのかわかりませんがModelState
、job.properties.parameters.MyTags
は厄介なパラメーターを指しています。
私はそれがデータ型と関係があると確信しています。パラメーターが JSON オブジェクトとして渡され、Runbook がそれを理解できないことが原因である可能性があります。私は、PowerShell からテンプレートにオブジェクトを渡すことに慣れています。
Runbook (Update-ResourceGroupTags.ps1)
テスト用の Runbook は次のようになります。
認証はまだ必要ないため、意図的に入力していませんが、書かれていない/見逃したルールがある場合に備えて、 `[parameter(Mandatory = $true)] を$MyTags
試して使用しました。[object]
ゴール
簡単に言うと、テンプレートで複雑なオブジェクトを変数として作成し、それを単一のオブジェクトとして Runbook のパラメーターに渡したいと考えています。値は動的であり、展開時までわかりません。Runbook で各パラメーター (テスト 8) を指定する必要があると、この要件が破られます。
New-AzureRmResourceGroupDeployment
コマンドレットでテンプレートを開始します。
「複合オブジェクト」変数を作成します。
テンプレートは のリソースを実行し"type" : "jobs"
ます。
によって実行される Runbook には、次のように渡す必要jobs
があるパラメーターがあります。MyTags
roleTagObject
jobs.properties.parameters.MyTags
これが機能していません。各キーに分解すると (テスト 8)、機能します。
私の最初の考えは、それを単一の文字列に変換し、関数を使用してランブックに渡すことjson()
ですが、テンプレートでそれを行う方法がわかりません。
テンプレート (testRunRunbook.json)
この質問をこれ以上行わないように、テンプレートを GIST に入れました。 https://gist.github.com/arcotek-ltd/7c606540980a45a3a7915ccae2e0b140
"resources":[]
テンプレートが作成されたので、セクションを別のテンプレートにコピーできます。したがって、一部の変数とパラメーターの名前が奇妙に見える場合があります。私が言ったように、この問題を除けば、テンプレートは機能します。
パワーシェル
したがって、PowerShell を使用してテンプレートを呼び出しています。
次のテストを試しました。
テスト 1
コメントを外す$TemplateParametersObject.runbookParameters.MyTags
:
結果の失敗- 上記のエラーを参照してください。
テスト 2
に置き換え$MyTags
ます$JsonTagsHash
:
結果:合格期待どおりに動作します。パラメーターは Runbook に渡されます。
テスト 2 は機能しますが、実行時にテンプレート内で生成されるパラメーターを Runbook に渡すことができる必要があります。つまり、PowerShell を使用できません。テンプレート内job.properties.parameters
(gist の 103 行目)
テスト 3
MyTags
それが問題の原因であることを証明するには、完全に取り除きます。
結果:エラーはありませんが、myTags
渡されません (明らかに)。
テスト 4
変数オブジェクトを作成し、それをパラメーターに渡します。
そして戻ってjob.properties.parameters
:
結果の失敗- 上記のエラーを参照してください。
テスト 5
直接試してください:
結果の失敗- 上記のエラーを参照してください。
テスト 6
json()
テンプレート機能を使用します。文字列が必要なので、うまくいくとは思っていません。
結果失敗。予測どおり:
テスト 7
MS が提供するjson()
テンプレート関数の例を試してみてください。
結果の失敗- 上記のエラーを参照してください。面白い!しかし、なぜ?動作中の PowerShell テストでは、JSON オブジェクトである必要があることが示唆されています。これは何をするのjson()
ではないですか?
テスト 8
オブジェクトを個々のキー/値に分解:
また、Runbook のパラメーターを 1 から 3 に変更する必要があります。
結果パス- ただし、オブジェクトを渡すことができるという考え方は、キーと値のペアをいくつでも持つことができるということです。この方法では、変数とパラメーターをハードコーディングする必要があるだけでなく、Runbook もハードコーディングする必要があります。あまり柔軟ではありません。
私はアイデアがありません。何か提案はありますか?
azure - 入力パラメーターに基づく Azure ARM テンプレート パラメーター
template.json が与えられた場合:
virtualMachineName の入力に基づいて networkInterfaceName を設定するにはどうすればよいですか?
例えば:
VirtualMachineName の入力を求めるプロンプトが表示され、「test-vm」が入力された場合は、networkInterfaceName をデフォルトで「test-vm-nic」に設定します。
この parameters.json を追加しようとしました:
しかし、エラーを受け取ります:
azure - docker レジストリからコンテナー イメージをプルして Azure コンテナーをデプロイする方法
私は現在、イメージをパブリック レジストリにプッシュする方法が必要な azure プロジェクトに取り組んでいます。これは、Azure ACR または docker レジストリにすることができます。
Azure は Azure ACR への匿名読み取りアクセスをサポートしていないようです。したがって、唯一の方法は、イメージを Docker レジストリにプッシュし、Azure でのコンテナーのデプロイ中にイメージを Docker レジストリからプルすることです。
出来ますか?もしそうなら、どのようにAzureテンプレートを使用してそれを達成できますか? 例を教えてください。
azure - Azure Resource Manager テンプレートのリソース関数を使用できない
私のパラメーターファイルは次のようになります。
adminPassword値は、特定のidを持つ指定されたKeyVaultから取得されます。ただし、「id」値をハードコーディングする必要があります。このリンクに
よると、次のようなものを使用して ID を指定できます。
ただし、上記の構文/リソース関数を使用すると、VSTSを使用して App Service をリリースおよびデプロイしているときにエラーが発生します( APP のデプロイにはAzure リソース グループのデプロイタスクを使用しました)。エラーは次のようなものです。
ID は次の形式にする必要があります。
何が間違っているのかわからない?