2023年9月3日日曜日

PowerShellのAksHciモジュール都合により、Az.ResourcesとAz.Accountsが複数バージョン並列配置せざるを得なかった

Az.StackHCI、Az.Resources、Az.ccountsを最新化するPowerShellスクリプト でPowerShellモジュールを最新化できたと思ったら、そうは問屋が卸さなかった。。。

PowerShellモジュールのAksHci 1.1.83は、Az.Resource 4.40、Az.Accounts 2.6.0を要求しています。。。
※あくまでも本校執筆時点の2023年9月3日での話です。AksHci がバージョンアップしたら状況は変わるかもしれません。

Import-Module -Name AksHci
後は、クラスターの全ノードでAz.ResourcesとAz.Accountsが複数バージョンの並列インストールとなりました。

2023/09/03追記

同じPowerShellモジュールを並列でインポートしたせいか、下記のエラーが発生しました。

PowerShellウィンドウをいったん閉じてから開きなおし、Az.Accounts 2.6.0、Az.Resource 4.4.0の順でインポート後、AksHciをインポートしました。結果、上記のエラーは収まった模様。

2023年9月2日土曜日

Windows Admin Center 2306のTool updates -> Improved Hyper-V virtual machine management その2

Windows Admin Center 2306のTool updates -> Improved Hyper-V virtual machine management その1 から続く

Windows Admin Center version 2306 is now generally available!

のTool updates -> Improved Hyper-V virtual machine managementの中から、下記についてみていきます。

  • Ability to move virtual machine between clusters
  • Ability to move virtual machine with storage
  • Ability to pop out a VM’s RDP session, so you don’t have to switch context and leave your current view

Ability to move virtual machine between clusters

「管理」から「移動」を選択します。
移行先で別のクラスターを選んでから、配置先のストレージを選びます。
設定項目を確認後、「移動」クリックしてしばらく待ちます。
上記画像の後、移行元の仮想マシンは、さっと消えてしまいますが、移行先にはなかなか出てこないので、失敗したと焦らず待ちましょう。しばらくすると仮想マシンマイグレーションの結果が表示されます。
仮想ハードディスクのパスを念のため確認しておきます。問題無いですね。

Ability to move virtual machine with storage

※移行先に仮想マシン名のフォルダーを作成しておいたほうが、変な配置にならずに済みます。フェールオーバークラスターマネージャーでストレージ移行をする場合とおんなじ感じです。

変な配置になってしまった例から記載します。

「管理」から「移動」を選択します。

c:\ClusterStorage\Volume2配下を選択して、「移動」をクリックします。
しばらく待つと結果が表示されます。
c:\ClusterStorage\Volume2配下にHyper-Vフォルダーを作成してそこへストレージ移行しました。。。
ということで、移行先に仮想マシン名のフォルダーを作成してから、移行先として指定し「移動」をクリックします。
結果が表示されます。
希望した配置になりました。

Ability to pop out a VM’s RDP session, so you don’t have to switch context and leave your current view

※対象の仮想マシンに対して、RDPやWinRMの許可設定、名前解決が必要です。念のため。
 同じADドメインがベストかもしれませんね。

仮想マシンを選択後、「接続」→「接続」→接続アイコンの右端を下図のように選択します。

認証情報を入力します。
リモートデスクトップ接続しました。この後、「Ctrl+Alt+Delを送信」をクリックすればログオンできます。

Windows Admin Center 2306のスケジュールされたタスク

タスクを編集するとエラーになりました。

GUIのタスクスケジューラだと、最後に認証を求められます。が、Windows Admin Centerのスケジュールされたタスク拡張は、認証を求められないからでしょう。



2023年8月26日土曜日

Az.StackHCI、Az.Resources、Az.ccountsを最新化するPowerShellスクリプト

Az.StackHCIモジュールのバージョン違いによる挙動なのか否か での気付き(凡ミスを繰り返したくない)をもとに、メンテナンスを簡素化することとしました。

元ネタは、Uninstall older versions of PowerShell after successful upgrade に記載がある古いPowerShellモジュールを削除するスクリプトです。

こちらをもとに、Update-Moduleをコードに追加、更新および古いモジュールを削除する対象としてAz.StackHCI、Az.ccounts、Az.Resourcesを指定した下記を作成しました。
※後ほどこの並びだとダメだと、スクリプトの動作確認で判明します。。。
太字部分が追加や変更したコードです。
$modules = @("Az.StackHCI", "Az.Accounts", "Az.Resources")
foreach($module in $modules)
{
    $current = Get-InstalledModule -Name $module -ErrorAction Ignore
    if (-not $current)
    {
        Write-Host $("[Module: $module] Is not installed, skipping")
        continue
    } else {
        update-module -Name $module -Force
    }
    Write-Host $("[Module: $module] Newest installed version is $($current.Version)")
    $versions = Get-InstalledModule -Name $module -AllVersions
    foreach($version in $versions)
    {
        if ($version.Version -eq $current.Version)
        {
            Write-Host $("[Module: $module] Skipping uninstall for version $($version.Version)")
            continue
        }
        Write-Host $("[Module: $module] Uninstalling version $($version.Version)")
        $version | Uninstall-Module -Force -Confirm:$false
    }
}

スクリプト実行前は、下記の通りでした。

スクリプト実行後は、下記の通りとなりました。Az.Resourcesのスペルミスを修正したので、2回実行しました。Az.Resourcesがデグレードしているので、まだ改良が必要かなぁ。。。

依存関係の関係で、"Az.StackHCI", "Az.Resources", "Az.Accounts"の順で処理しないとだめでした。あと"Az.Accounts"は、"Az.StackHCI"の依存関係に伴いインストールされますね。
でも、別環境では、下記の通り新しいバージョンを削除しているので、改良が必要です。。。

ということで現時点のコードを下記に貼っておきます。(上記の改良はまだ未反映)

$modules = @("Az.StackHCI", "Az.Resources", "Az.Accounts")
foreach($module in $modules)
{
    $current = Get-InstalledModule -Name $module -ErrorAction Ignore
    if (-not $current)
    {
        Write-Host $("[Module: $module] Is not installed, skipping")
        continue
    } else {
        update-module -Name $module -Force
    }
    Write-Host $("[Module: $module] Newest installed version is $($current.Version)")
    $versions = Get-InstalledModule -Name $module -AllVersions
    foreach($version in $versions)
    {
        if ($version.Version -eq $current.Version)
        {
            Write-Host $("[Module: $module] Skipping uninstall for version $($version.Version)")
            continue
        }
        Write-Host $("[Module: $module] Uninstalling version $($version.Version)")
        $version | Uninstall-Module -Force -Confirm:$false
    }
}

2023年8月19日土曜日

Az.StackHCIモジュールのバージョン違いによる挙動なのか否か

Register-AzStackHCIで同じようにAzure Stack HCIクラスターを登録したつもりが、リージョンで挙動が違った からの続き。
※後藤さんより、ご指摘いただきました。ありがとうございました。

East USリージョンに登録しているAzure Stack HCIクラスターのノードでGet-Moduleしてみました。


つづいてJapan Eastに登録しているAzure Stack HCIクラスターのノードでGet-Moduleしてみました。


East USリージョンに登録しているAzure Stack HCIクラスターは、Az.StackHCIモジュールのバージョンが古い。。。

East USリージョンに登録しているAzure Stack HCIクラスターは、Az.StackHCIモジュールを最新化しました。(Remove-Module、Uninstall-Module、Install-Moduleget-Module、Import-Module)

2.1.1と、さらに新しくなっているけど。。。

とりあえず、これでAzure Stack HCIを再登録しました。

Az.StackHCI V2系になったら、Azure Stack HCIクラスターもクラスターノードも同じAzureリソースグループに登録されました。

以上、見落としでお騒がせしました。Az.StackHCIのバージョン違いもちゃんと気にします。。。

Register-AzStackHCIで同じようにAzure Stack HCIクラスターを登録したつもりが、リージョンで挙動が違った

Azure Stack HCIのノードは、別のAzureリソースグループに登録された の続き。

その後、別のAzure Stack HCIクラスターを別リージョンに登録しました。

下記のように同じコマンド(テナントおよびサブスクリプションは同じだが、太字としたリージョンおよびリソースグループは違う)を使いました。

Register-AzStackHCI -SubscriptionId "サブスクリプションID" -ComputerName g2ashcios01 -Region "East US" -TenantId "テナントID" -ResourceGroupName armrg-east-us-arc-ashci-Sponsor1 -Verbose -UseDeviceAuthentication

Register-AzStackHCI -SubscriptionId "サブスクリプションID" -ComputerName g2ashcios03 -Region "Japan East" -TenantId "テナントID" -ResourceGroupName armrg-east-japan-arc-ashci-Sponsor2 -Verbose -UseDeviceAuthentication

結果は、下記のようになりました。

Azure Arc対応サーバーの観点で、状況を確認しました。選択したサーバーは、Azure Stack HCIクラスターのノードです。上二つが2ノードクラスターでEast USリージョンへ登録しています。下一つがAzure Stack HCIシングルノードで、Japan Eastリージョンンへ登録しています。

リージョンによってAPIバージョンが異なるのは、理解していました。が、こういう形で違いが出ると結構きついですね。。。

2023/08/19 追記
リージョンのAPIバージョン違いより、Az.StackHCIモジュールのバージョン違いが怪しそうなので、確認しなおしました。

Az.StackHCIモジュールのバージョン違いによる挙動なのか否か に続く。

Azure Stack HCIのノードは、別のAzureリソースグループに登録された

先ほど再登録したところ、Azure Stack HCIとは別のリソースグループへ、Azure Arc対応サーバーとしてノードが登録されました。登録時に-Verboseオプション付けていたので気づきました。。。

※7月22日ごろに再登録したときは、同じPowerShellを使いましたがこういう挙動ではなかったような。勘違いなのか否かというところで、記憶があいまいです。

明示的に同じAzureリソースグループにしたければ、Register-AzStackHCIにて-ArcServerResourceGroupNameオプションが必要です。
挙動が変わったと言い切れないので、Register-AzStackHCIのオプションは毎回確認します。

2023/08/19 追記
結果として、リージョンによるAPIの違いによる可能性かも。
Register-AzStackHCIで同じようにAzure Stack HCIクラスターを登録したつもりが、リージョンで挙動が違った に続く。

2023/08/19 追記2
リージョンのAPIバージョン違いより、Az.StackHCIモジュールのバージョン違いが怪しそうなので、確認しなおしました。

Az.StackHCIモジュールのバージョン違いによる挙動なのか否か に続く。