[解決済み] New-AzureRmResourceGroupDeployment コマンドレットで追加のパラメータを渡す方法
質問
New-AzureRmResourceGroupDeployment コマンドレットを使用して VM を作成するための powershell スクリプトを作成しています。
New-AzureRmResourceGroupDeployment -Name VmDeployment `
-TemplateFile C:\template\template.json `
-TemplateParameterFile C:\template\parameters.json
これは、VMを作成するために使用します。で
parameters.json
のように、いくつかのパラメータがあります。
virtualMachineName
,
networkInterfaceName
などはハードコードされています。
現在、これらのスクリプトを自動化しようとしています。つまり、何らかの条件が満たされたときに、ツールから単独で実行されるようにします。
私の要件は、このスクリプトが実行されるたびに、VMNameの数字を増やさなければならないということです。例えば、VM Nameが現在
VMName1
にする必要があります。
VMName2
を使用すると、次回スクリプトを実行したときに 同様に
VMName3
を実行すると、そのスクリプトは次回に実行されます。そのため
virtualMachineName
パラメータはハードコードされているため、現在はこのようなことは起こりません。どうにかして
virtualMachineName
を、json ファイルから取得するのではなく、スクリプト自体のパラメータとして使用します。
何かご指導いただければ幸いです。
どのように解決するのですか?
これは間違いなくできますし、幸いなことに方法も一握りです。
-
インラインでパラメータを渡す . に書いてあります。 Azure PowerShell ドキュメント for Templates インラインパラメータをローカルパラメータファイルと共に使用することができ、インラインパラメータが優先されることを示します。該当する段落です。
<ブロッククオートインラインパラメータとローカルパラメータファイルは、同じデプロイメント操作で使用することができます。たとえば、ローカル パラメータ ファイルでいくつかの値を指定し、ディプロイメント中に他の値をインラインで追加することができます。ローカル パラメータ ファイルとインライン パラメータの両方に値を指定した場合、インラインの値が優先されます。
これは、VM Nameパラメータを明示的に制御することができるため価値がありますが、インラインパラメータを渡すかどうかは呼び出し側(この場合はあなた)次第です。これは ローカル パラメータファイルであり、リモートファイル (すなわち
-TemplateParameterFile
であって-TemplateParameterUri
). 結果として、次のようなコマンドになります。New-AzureRmResoruceGroupDeployment -Name VmDeployment ` -TemplateFile C:\template\template.json ` -TemplateParameterFile C:\template\parameters.json ` -virtualMachineName VMName42
-
オリジナルを変更する パラメータ.json . PowerShell/Python/Favorite-scripting-言語を使って、以下のようなパースを行うことができます。 paramters.json で、VM Nameパラメータを見つけ、整数のサフィックスを見つけ、それをインクリメントして、新しいバージョンでファイルを上書きします。これには、インラインパラメータを渡すことを覚えておく必要がないという利点がありますし、バージョン番号はすでに パラメータ.json . これは1つの大きな欠点があり、元のJSONを変更してしまうので、危険な場合があります。
-
コピー パラメータ.json を編集し、一時的にコピーする . をコピーするスクリプトを書くことができます。 パラメータ.json を別の一時的なJSONファイルにコピーし、オプション2のようにコピー中にVM Nameパラメータをインクリメントします。この一時ファイルを
New-AzureRmResourceGroupDeployment
. これは、元の パラメータ.json ファイルを作成する必要がありますが、バージョン番号をどこかで追跡する必要があります (たとえば、別のローカルファイル、コマンドラインパラメータ、環境変数など)。
シンプルにするために、私はオプション1をお勧めします。これはすでにすぐに使えるし、外部スクリプトを必要としない。
関連
-
[解決済み】Azureウェブサイトのメッセージ「このディレクトリまたはページを表示する権限がありません。どうすればいい?
-
[解決済み] Azure Kubernetes "az aks get-credentials "コマンドの実行時のエラーについて
-
[解決済み] New-AzureRmResourceGroupDeployment コマンドレットで追加のパラメータを渡す方法
-
[解決済み] "'New-AzureStorageContext' is not recognized," Yet the Module is Installed (モジュールはインストールされている)
-
[解決済み] カンマ区切りの文字列を分割する
-
[解決済み] バックエンドの初期化が必要なため、"terraform init" を実行してください。
-
[解決済み] AzureリソースグループURL
-
[解決済み] Azure Cloud Shell で Set-AzContext が動作するが、Azure PowerShell では動作しない。
-
[解決済み】Azure Web SiteとAzure Web Roleの違いは何ですか?
-
[解決済み] リースされたブロブを含むAzureストレージアカウントを削除するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Azure Kubernetes "az aks get-credentials "コマンドの実行時のエラーについて
-
[解決済み] "'New-AzureStorageContext' is not recognized," Yet the Module is Installed (モジュールはインストールされている)
-
[解決済み] AADSTS900144:レガシー開発者ポータルを使用する場合、リクエストボディに次のパラメータ 'scope' を含める必要があります。
-
[解決済み] コンテナにアンレディステータスがある」と表示される。Kubernetesで「[]」というエラーが発生する
-
[解決済み] カンマ区切りの文字列を分割する
-
[解決済み] Connect-AzAccount - azureのデバイス認証を回避する方法は?
-
[解決済み] Azure Cloud Shell で Set-AzContext が動作するが、Azure PowerShell では動作しない。
-
[解決済み] Azureはどのようなスタック/プログラミング言語で書かれているのですか?
-
[解決済み】Azure WebjobsとAzure Functionsの比較:選び方
-
[解決済み] リースされたブロブを含むAzureストレージアカウントを削除するにはどうすればよいですか?