Azureの小ネタ (改)

~Azureネタを中心に、色々とその他の技術的なことなどを~

Azure Batch に NET 4.7.1をインストールする

Azure Batch にNET 4.7.1を仕込む備忘録。

NET4.7.1を仕込むには、まずインストーラを取得する必要がありますが、既定の状態だとCMDベースでCURLとかが使えないとかちょっと不自由。

Application Package

ただ、Azure Batchには、Application Packageと呼ばれるアプリケーションを仕込んでおく仕組みがあって、そこにNET4.7.1のパッケージを配置しておきます。

NET4.7.1のオフラインインストーラーは以下から取得します。

https://docs.microsoft.com/ja-jp/dotnet/framework/deployment/deployment-guide-for-developers

New Application から、EXEをZIP化してUploadしておくと所定のストレージに格納されます。

f:id:StateMachine:20180315105822p:plain

いちどタスクにApplication Packageを紐づけて環境変数を参照すると以下のように展開されています。

AZ_BATCH_APP_PACKAGE_netfx=D:\batch\tasks\apppackages\netfx4712018-03-15-01-59
AZ_BATCH_APP_PACKAGE_netfx#471=D:\batch\tasks\apppackages\netfx4712018-03-15-01-59

DIRすると

 Directory of D:\batch\tasks\apppackages\netfx4712018-03-15-01-59

03/15/2018  02:02 AM    <DIR>          .
03/15/2018  02:02 AM    <DIR>          ..
03/15/2018  02:02 AM        68,742,112 NDP471-KB4033342-x86-x64-AllOS-ENU.exe
               1 File(s)     68,742,112 bytes
               2 Dir(s)  18,570,358,784 bytes free

こうなります。Docsでは以下のあたりを参照のこと。

コンピューティング ノードへのアプリケーション パッケージのインストール - Azure Batch | Microsoft Docs

Pool

PoolにApplication Packageを紐づけて、ノードをリブートします。

f:id:StateMachine:20180315111241p:plain

Start Task

Start Taskでインストーラーを起動します。

f:id:StateMachine:20180315111549p:plain

最初、/norestartをつかたら、3010でエラーになりました。Rebootが必要なのに、/norestart指定したからっぽいです。

MsiExec.exe and InstMsi.exe Error Messages (Windows)

今回使っているBatchノードはVMなので、不完全ながらインストールされてしまうと再度テストできないので、ノード数を 1->0->1 のように変更してさいどセットアップされるようにしてみます。

最終的には以下のコマンドライン。

cmd /c "%AZ_BATCH_APP_PACKAGE_netfx%\NDP471-KB4033342-x86-x64-AllOS-ENU.exe /q"

最後、RDPでのぞいて KB4033393が入っていればOK。

f:id:StateMachine:20180315124655p:plain

これで、ノードをスケールアップ、ダウンさせても各ノードにNET4.7.1が展開されるでしょう。

余談

DocsのAzure BatchサンプルのPortalは日本語なのに、現時点で英語になってたよくわからない。