Logo

dev-resources.site

for different kinds of informations.

ランブックを活用したWindows Serverインプレースアップグレードのススメ

Published at
4/24/2024
Categories
windows
ec2
japanese
inplaceupgrade
Author
matyuda
Author
7 person written this
matyuda
open
ランブックを活用したWindows Serverインプレースアップグレードのススメ

みなさんWindows ServerのEOL対策はどのようにされていますか?
直近ではWindows Server 2012R2の延長サポートが2023/10/10に終了しました。

Windows Server 2012R2が動いているAmazon EC2も多いのではないでしょうか?これらのインスタンスを新しいOSに移行するためには、新しいOSバージョンのAMIを使って再度アプリケーションをインストールするという方法もありますが、オンプレミスと同様にインプレースアップグレードをすることもできます。

インプレースアップグレードを行うことで、ドキュメントに残されていない手順によって新しくインストールしなおしても動作しないといった問題に悩まされることは少なくなります。

アップグレードが必要なEC2インスタンスがたくさんある場合には、AWS Systems ManagerのオートメーションランブックのAWSEC2-CloneInstanceAndUpgradeWindows ランブックを活用することもできます。

AWSEC2-CloneInstanceAndUpgradeWindows ランブック とは?

AWSEC2-CloneInstanceAndUpgradeWindows ランブックは、移行対象のEC2インスタンスのインスタンスID、移行先のOSバージョン、EC2にアタッチするロール、移行に利用するサブネットIDを指定することで実行でき、以下のような動きをします。そのため、一般的なインプレースアップグレードとは異なり、移行後のインスタンスで動作確認を行なった上で、既存のインスタンスと切り替えるということができます。なお、プライベートIPアドレスやグローバルIPアドレスを移行前と同じものを利用しなければならない場合でのIPアドレスの移行方法は別の後日記載する予定です。

  1. 指定されたインスタンスIDのAMIを取得する。
  2. そのAMIからインプレースアップグレードするためのEC2インスタンスを指定されたサブネットIDに生成する。
  3. 生成したインスタンス内でインプレースアップグレードを実行する。
  4. 移行先のOSバージョンにアップグレードされた状態のAMIを作成する。
  5. インスタンスを終了する。

なお、2で生成されるインスタンスタイプは、指定されたインスタンスIDのインスタンスタイプと同じとなります。アップグレードするためにはt2.medium相当以上のインスタンス(インストール作業にてかなりのCPUリソースを使用し、smallインスタンスサイズ相当ではクレジットが枯渇するため)と30GB以上の空き容量が必要ですので、要件に満たない場合には、あらかじめインスタンスタイプやEBSの容量は要件を満たすように変更してください。

また、Windows Server 2012R2のインスタンスにてAWS PV ドライバーをアップグレードするとインスタンスのステータスチェックが失敗して起動しないということが起こることがありましたが、8.3.5にアップグレードすることにより対応することができました。(AWSマネジメントコンソールより対象インスタンスのシステムログを参照することで現在インストールされているAWS PVドライバーを確認できます)

今回はAWSEC2-CloneInstanceAndUpgradeWindows ランブックを活用して実際にインプレースアップグレードを行ない、発生した問題とAWSサポートの協力を得て実施した対応策についてまとめてみました。

サポート切れになっているWindows Server 2012R2以前のOSを利用されている方は、ぜひ参考にしてみてください。

AWSEC2-CloneInstanceAndUpgradeWindows ランブックで発生した問題と対応策

getOSVersion ステップでタイムアウトする

SSM Agent on Instances: [i-xxxxxxx] are not functioning

SSM Agentのインストールを行ってください。

runUpgradeFrom2012R2Or2016 ステップで失敗する

Fail to start automation, errorMessage: Parameter "TargetWindowVersion" has value "2012R2" not found in [2016, 2019, 2022]. (Service: AmazonSSM; Status Code: 400; Error Code: InvalidAutomationExecutionParametersException; Request ID: xxxxxxxxxxxxx; Proxy: null)

ランブック指定時の TargetWindowVersion の指定が間違っているため、移行先のバージョンを正しく入力します。

checkForSSMAgent でタイムアウトし、prepareServerInstanceForSSMInstall、getUpgradedImageDetailsで失敗する

runUpgradeFrom2012R2Or2016のステップが以下で失敗する場合に、内部的にAWSEC2-CloneInstanceAndUpgradeWindows2019のオートーションランブックが呼ばれていて、その中でcheckForSSMAgentのタイムアウトが発生する事象です。

Failed to run automation with executionId: xxxxxxxxxxxxx TimedOut :
{Status=[TimedOut], Output=[No output available yet because the step is not successfully executed, No output available yet because the step is not successfully executed], ExecutionId=[xxxxxxxxxxxxx]}

ランブック指定時の SubnetId にNAT Gatewayが有効になっているか「パブリック IPv4 アドレスの自動割り当て」になっているサブネットを指定します。もしくは「パブリック IPv4 アドレスの自動割り当て」を有効に変更します

checkAfterWindowsUpgrade2019 でタイムアウトする

SSM Agent on Instances: [i-xxxxxxxxxxxxx] are not functioning

dism /online /get-intlコマンド実行時に表示されるインストールされている言語とフォールバック言語が異なる場合に発生するため、以下の設定を変更し、いったんフォールバック言語に変更したうえで、アップグレードを行い、そのあと再び元に戻す必要があります。(以下の例では英語版のAMIを使って日本語設定をしているEC2の手順となります)

  1. 日本語のインストールと表示言語の変更でEnglish (United States)を選択
  2. 地域の変更でUnited Statesを選択
  3. タイムゾーンを(UTC) Coordinated Universal Timeに変更
  4. Unicode 対応ではないプログラムの言語の変更でEnglish (United States)を選択
  5. ようこそ画面と新しいユーザーアカウントの言語設定

なお、システムログからも言語が異なっているかどうかを判断することができます。
以下の例では英語版AMIを使っていて、言語が日本語になっていることがわかります。また、AWS PVドライバがv7.3.1.2となっているため、事前にv8.3.5へのバージョンアップが必要です。

2022/07/15 18:08:08Z: AMI Origin Version: 2015.06.10
2022/07/15 18:08:08Z: AMI Origin Name: Windows_Server-2012-R2_RTM-English-64Bit-Base
2022/07/15 18:08:08Z: OS: Microsoft Windows NT 6.3.9600
2022/07/15 18:08:08Z: OsVersion: 6.3
2022/07/15 18:08:08Z: OsProductName: Windows Server 2012 R2 Standard
2022/07/15 18:08:08Z: OsBuildLabEx: 9600.20475.amd64fre.winblue_ltsb_escrow.220622-1747
2022/07/15 18:08:08Z: Language: ja-JP
2022/07/15 18:08:08Z: EC2 Agent: Ec2Config service v3.6.269
2022/07/15 18:09:19Z: Message: Waiting for meta-data accessibility...
2022/07/15 18:09:20Z: Message: Meta-data is now available.
2022/07/15 18:09:20Z: AMI-ID: ami-xxxxxxx
2022/07/15 18:09:20Z: Instance-ID: i-xxxxxxxx
2022/07/15 18:09:24Z: Driver: AWS PV Network Device v7.3.1.2
2022/07/15 18:09:24Z: Driver: AWS PV Storage Host Adapter v7.3.1.2
Enter fullscreen mode Exit fullscreen mode
japanese Article's
30 articles in total
Favicon
re:Invent 2023に参加してから1年たってみて
Favicon
re:Invent 2023 day1
Favicon
IIS環境でのパス制御を考える
Favicon
ホストベースルーティングを活用してALBを集約した際のデメリットを検討する
Favicon
AWS Summit Japan 2024体験記
Favicon
AWS Step Functionsに入門する
Favicon
AWS Community Buildersになって変わったこと
Favicon
GenAI Use Cases JPを試してみた
Favicon
RDS for MySQLでスロークエリログの出力を有効化する
Favicon
AWS Fargateを利用した時刻固定したシステムテストの方法について
Favicon
ランブックを活用したWindows Serverインプレースアップグレードのススメ
Favicon
DocumentDBでマルチバイト検索を実現する場合の留意事項について
Favicon
JAWS DAYS 2024参加体験記
Favicon
OCR + SwiftUI + Japanese. Quite a training project! 😅
Favicon
Lambdaで.NET 7のカスタムランタイムを実行する
Favicon
$0.005 per In-use public IPv4 address per hour の明細が高額になる場合の対応を考える
Favicon
Ryuu - a Japanese dragon
Favicon
事務局長を2年やってみて感じたこと
Favicon
Mechanically Detecting Accessibility Violations
Favicon
Hello back! Sharing some projects
Favicon
Making Font Loading More Efficient with React Content Font
Favicon
How to Avoid Japanese Characters in Your Code!
Favicon
AI 基礎 Part 00 -- stable-diffusion / ChilloutMix を使って日本人美女の画像を作る
Favicon
Next 基礎 Part 02 -- axios で API を叩けるようにする。No 'Access-Control-Allow-Origin' エラーの解決。
Favicon
Next 基礎 Part 01 -- プロジェクト作成
Favicon
AWS 基礎 Part 0 -- EC2 などの AWS サービスと用途の整理
Favicon
Android 基礎 -- Part 00 Android Studio のインストールと Hello World
Favicon
Web エンジニアリング基礎 -- Part02 TS のメリットとブラウザのレンダリング詳細
Favicon
Web エンジニアリング基礎 -- Part01 同期 or 非同期の処理のコールスタックとタスクキュー
Favicon
Ubuntu Settings -- US キーで Mac のように ctrl space の英かな切り替えと ctrl h などでの削除ができるようにする。

Featured ones: