0

これらのコードは両方とも、私のAzure RM VMでローカルのすべての.batファイルと.msiファイルをダウンロード、解凍、実行するのに最適です。私が狂ったように修正したARMテンプレートを使用して展開してきました。これはすべてのことで非常に新しいので、おそらく穴がいっぱいです。JSONテンプレートを使用してAzure RM VMにpowershellコマンドを注入しようとしていますカスタム拡張

私はAzureファイル共有を介してJSONカスタムスクリプトエクステンションを使ってそれらを撮影しようとしていましたが、同じ結果を持つBLOBコンテナでそれらを取得しようとしていました。 「ネットワークパスが見つかりません」という冗長なエラーメッセージが表示され続けます。私はログをスキャンしており、これを回避する方法に関する情報は見つかりません。私は正しい方法で達成しようとしていることに近づいていますか?動的なパラメータを使用して私のインストールを自動的に展開するためのよりよい方法がありますか?私が得ることができるものは何でも助けを楽しみにしてい

cmdkey /add:$ArtifactsStorageAccountName.file.core.windows.net /u:$ArtifactsStorageAccountName /pass:$StorageAccountKey 
Copy-Item -Path $InstallCustomScriptExtensionScriptFilePath -Destination C:\ 
Copy-Item -Path $InstallCustomScriptExtensionZIPFilePath -Destination C:\ 
Unblock-File -Path C:\UnzipMetaforceInstall.ps1 
powershell -ExecutionPolicy Unrestricted -File C:\UnzipMetaforceInstall.ps1 
PowerShell net use Z: \\$ArtifactsStorageAccountName.file.core.windows.net\$FileShareName\InstallMetaforce /u:artifactsstoaccastst $StorageAccountKey 
PowerShell Copy-Item -Path Z:\UnzipMetaforceInstall.ps1 -Destination C:\ 
PowerShell Copy-Item -Path Z:\InstallMetaforce.zip -Destination C:\ 
PowerShell Unblock-File -Path C:\UnzipMetaforceInstall.ps1 
PowerShell -ExecutionPolicy Unrestricted -File C:\UnzipMetaforceInstall.ps1 

    { 
     "name": "InstallCustomScriptExtension", 
     "type": "extensions", 
     "location": "[variables('location')]", 
     "apiVersion": "2015-06-15", 
     "dependsOn": [ 
     "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmNamePrefix'), copyindex(1)))]", 
     "DSCConfig" 
     ], 
     "tags": { 
     "displayName": "InstallCustomScriptExtension" 
     }, 
     "properties": { 
     "publisher": "Microsoft.Compute", 
     "type": "CustomScriptExtension", 
     "typeHandlerVersion": "1.4", 
     "autoUpgradeMinorVersion": true, 
     "settings": { 
      "fileUris": [ 
      "[parameters('InstallCustomScriptExtensionScriptFilePath')]" 
      ], 
      "commandToExecute": "[parameters('CommandToExecuteCustomScript')]" 
     }, 
     "protectedSettings": { 
      "storageAccountName": "[parameters('ArtifactsStorageAccountName')]", 
      "storageAccountKey": "[parameters('StorageAccountKey')]" 
     } 
     } 
    } 

、私は今、約2週間のために、この段階で立ち往生してきました。追加の情報が必要な場合や、私が何らかの形で不明確である場合は、私に教えてください。初めての投稿、長い時間の読者。

答えて

0

私は今週末にそれを解読することができました。PowerShell/JSONのパラメータを使ってスクリプトを動的にしました。それは魅力的です。

 { 
     "name": "InstallCustomScriptExtension", 
     "type": "extensions", 
     "location": "[variables('location')]", 
     "apiVersion": "2015-06-15", 
     "dependsOn": [ 
     "[concat('Microsoft.Compute/virtualMachines/', concat(parameters('vmNamePrefix'), copyindex(1)))]", 
     "DSCConfig" 
     ], 
     "tags": { 
     "displayName": "InstallCustomScriptExtension" 
     }, 
     "properties": { 
     "publisher": "Microsoft.Compute", 
     "type": "CustomScriptExtension", 
     "typeHandlerVersion": "1.4", 
     "autoUpgradeMinorVersion": true, 
     "settings": { 
      "fileUris": [ 
      "[concat(parameters('_artifactsLocation'), '/', parameters('InstallCustomScriptExtensionScriptFilePath'))]" 
      ], 
      "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File ', parameters('InstallCustomScriptExtensionScriptFilePath'), ' -ArtifactsStorageAccountName ', parameters('ArtifactsStorageAccountName'), ' -FileShareName ', parameters('FileShareName'), ' -StorageAccountKey ', parameters('StorageAccountKey'))]" 
     }, 
     "protectedSettings": { 
      "storageAccountName": "[parameters('ArtifactsStorageAccountName')]", 
      "storageAccountKey": "[parameters('StorageAccountKey')]" 
     } 
     } 
    } 

私の解凍スクリプトの内部には、次のようになります。

param(
[string]$ArtifactsStorageAccountName, 
[string]$FileShareName, 
[string]$StorageAccountKey 
) 

PowerShell net use Z: \\$ArtifactsStorageAccountName.file.core.windows.net\$FileShareName\Install /u:$ArtifactsStorageAccountName $StorageAccountKey; PowerShell Copy-Item -Path Z:\Install.zip -Destination C:\; 
$shell = New-Object -ComObject shell.application 
$zip = $shell.NameSpace("C:\Install.zip") 
MkDir("C:\Install") 
foreach ($item in $zip.items()) { 
$shell.Namespace("C:\Install").CopyHere($item) 
} 

Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Force 

cd "C:\Install" 
Unblock-File -Path "C:\Install\Install.ps1" 
"C:\Install\Install.ps1" | Invoke-Expression 

それはおそらく私のJSONテンプレート内のいくつかのより多くの仕事と保護された設定はおそらく不要である必要がありますが、現時点ではそれが仕事をしていません今すぐワンクリックでデプロイすることができます。

0

"ネットワークパスが見つかりません。"私はこれがsimilar situation hereのようなものだと私に信じさせてくれます。私は、スクリプトを使ってネットワークドライブとしてアズールファイルを添付すると必ずしも信頼できるものではないと思います。 Azureファイルから直接リンク先のトピックをダウンロードして解決する方法を教えてもらいました。それがあなたのためにうまくいかないかどうか私に教えてください。

+0

おかげで多くのカイ趙、それは一見を与えるだろう! :) – Stefan

0

また、ここではサンプルを見てとることができます。

https://github.com/bmoore-msft/AzureRM-Samples

をそのフォルダを見て:

https://github.com/bmoore-msft/AzureRM-Samples/tree/master/VMCSEInstallFilePS

フォルダ内のサンプルテンプレートは、カスタムスクリプトを使用していますAzureのBLOBストレージ(または別のURL)からファイルをインストールする拡張機能。

  1. コピーAzureのストレージに(例えばマシンを構築する)ローカルマシンからインストールするためのファイルとsasTokenと
  2. でそれを固定している:

    レポのルートは2つのことを行いPowerShellスクリプトが含まれています

  3. AzureRMテンプレートを展開し、blobのURIとsasTokenをデプロイメントに渡します。

また、サンプルの「forceUpdateTag」(Issues deploying dscExtension to Azure VMSSを参照)にも注意してください。 jsonテンプレートを何度も展開する必要がある場合は、VMが既に存在するときに拡張機能を実行するために必要です(PowerShellでRemove-AzureRMVMExtensionを実行すると、タグがより速くなる場合もあります)。

0

スクリプトが任意の秘密や知的財産が含まれていない場合、あなたはブロブ貯蔵容器にそれをアップロードし、「ブロブ」にアクセスポリシーを設定することができます(ない "プライベート『)、その後、あなたがドン』 SASトークンで心配する必要があります。

このテンプレートは、ブロブストレージとPowerShellを使用して(今日の4月28日、2016年)私のために働いていました。

{ 
    "type": "Microsoft.Compute/virtualMachines/extensions", 
    "name": "[concat(variables('vmName'),'/CustomScriptExtension')]", 
    "apiVersion": "2015-06-15", 
    "location": "[resourceGroup().location]", 
    "tags": { 
    "displayName": "CustomScriptExtension" 
    }, 
    "dependsOn": [ 
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]" 
    ], 
    "properties": { 
    "publisher": "Microsoft.Compute", 
    "type": "CustomScriptExtension", 
    "typeHandlerVersion": "1.8", 
    "settings": { 
     "fileUris": [ "[parameters('launchScriptBlobUri')]" ], 
     "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -file ',parameters('scriptFileName'))]" 
    } 
    } 
} 
+0

多分、Microsoftは私の他の拡張がtype = 'extensions'を持っている理由を説明することができますが、これはtype = 'Microsoft.Compute/virtualMachines/extensions'です。 –

+0

数ヶ月前にそれを変更したと思いますが、何十億ものガイドをスクロールすると確信しています。 :) – Stefan

関連する問題