OSPatching 拡張機能による Linux VM OS の更新の自動化
このポストは、10 月 23 日に投稿された Automate Linux VM OS Updates Using OSPatching Extension の翻訳です。
Azure VM の管理者は Linux 用 Azure VM OSPatching 拡張機能を使用して、カスタマイズされた構成を利用した VM OS の更新を自動化できます。
VM 拡張機能はこれまで利用したことがないという方は、こちらの記事でその背景をご確認ください。
前提条件
- 最新の Microsoft Azure Linux Agent (Version 2.0.6 以降)
- Azure PowerShell
Azure PowerShell の代わりに、Azure クロスプラットフォーム コマンド ライン (以下「xPlat」) を使用することも可能です。
xPlat のリリースに関する情報については、こちらの記事 (英語) をご覧ください。xPlat パッケージのインストール方法や使用法については、「方法: Azure クロスプラットフォーム コマンド ライン インターフェイスをインストールする」や「Mac および Linux 用 Azure コマンド ライン ツール」をご参照ください。
サポートされている機能
OSPatching 拡張機能を使用すると、Virtual Machines の OS の更新を構成できます。これには以下が含まれます。
- OS の修正プログラムをインストールする頻度とスケジュールの指定
- インストールする修正プログラムの指定
- 更新後の再起動処理の構成
拡張機能のパラメーター
管理者は、以下のパラメーターで OS の更新を構成できます。パラメーターは大文字と小文字が区別されるので注意してください。
パラメーター |
説明 |
値の型 |
既定値 |
intervalOfWeeks |
更新頻度 (週) |
1 から始まる整数。 例: “intervalOfWeeks” : “1” |
“1” |
dayOfWeek |
修正プログラムを適用する曜日。複数指定可能 |
文字列の列挙型。“Sunday”、“Monday”、“Tuesday”、“Wednesday”、“Thursday”、“Friday”、“Saturday”、“Everyday” (複数の場合は “|” で区切る)。 例: “dayOfWeek” : “Sunday|Wednesday” |
“Everyday” |
startTime |
更新プログラムの適用開始時刻 |
“hr:min” 形式の文字列。 例: “startTime” : “03:00” (時間は 0 ~ 23 の範囲。下の備考も参照1) |
空文字列 (単発モード) |
installDuration |
インストールの許容時間 |
“hr:mins” 形式の文字列。 例: “installDuration” : “00:30” (下の備考も参照2) |
“01:00” |
category |
インストールする修正プログラムの種類 |
文字列の列挙型。“Important”、“ImportantAndRecommended”。 例: “category” : “ImportantAndRecommended” |
“ImportantAndRecommended” |
rebootAfterPatch |
更新プログラム適用後の再起動処理 |
文字列の列挙型。“Required” (常に再起動)、“NotRequired” (再起動しない)、“Auto” (VM の現在の再起動の設定を使用)。 例: “rebootAfterPatch” : “Auto” |
“Auto” |
disabled |
この拡張機能を無効にするフラグ |
文字列。“True” または “False”。 例: “disabled” : “False” |
“False” |
stop |
OS の更新処理をキャンセルするフラグ |
文字列。“True” または “False”。 例: “stop” : “False” |
“False” |
1 startTime に空の文字列が設定されていると、インストールは「単発」モードとなります。詳細については、後述のシナリオ 3 を参照してください。
2 実際のインストール時間が installDuration で指定した時間を超えると、更新プロセスによりインストールは中止され、スケジュール設定されている次回の日時に再開されます。ただし、インストールの進捗段階によっては処理が中止されず、指定した許容時間を超過することがあります。
ダウンロード時間は 1 時間に固定されているので注意してください。ダウンロード時間が 1 時間を超えると、ダウンロード処理が中止され、次回再開されます。拡張機能はエラーをログ ファイルに記録します。詳細については、「ステータスのチェック」セクションをご覧ください。
サンプル スクリプトとユーザー シナリオ
以下は主なシナリオと、サンプルの PowerShell スクリプトおよび xPlat コマンドです。パラメーターは大文字と小文字が区別されるのでご注意ください。
シナリオ 1: OS の定期更新のセットアップ
定期的に修正プログラムを適用する場合は、“intervalOfWeeks”、“dayOfWeek”、“startTime” を使用してスケジュールを構成します。下はサンプル スクリプトです。
PowerShell スクリプト
# OS 更新スケジュールを構成する PowerShell スクリプトのサンプル
# VM を取得
$vm = Get-AzureVM -ServiceName "Your Service Name" -Name "Your VM Name"
VM Name"
# 拡張機能の情報を設定
$ExtensionName="OSPatchingForLinux"
$version="1.0"
$Publisher="Microsoft.OSTCExtensions"
# パラメーターの値を設定
# “ImportantAndRecommended” の修正プログラムによる OS の更新は、毎週 “Sunday” と “Wednesday” の “03:00” に開始
$PrivateConfig = '{
"disabled" : "False",
"stop" : "False",
"rebootAfterPatch" : "Auto",
"intervalOfWeeks" : "1",
"dayOfWeek" : "Sunday|Wednesday",
"startTime" : "03:00",
"category" : "ImportantAndRecommended",
"installDuration" : "00:30" }'
$PublicConfig = '{}'
# 構成を拡張機能に適用
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $version -PrivateConfiguration $PrivateConfig -PublicConfiguration $PublicConfig | Update-AzureVM
xPlat コマンド
node bin/azure vm extension set "Your VM Name" OSPatchingForLinux Microsoft.OSTCExtensions 1.0 -i '{}' -t '{"disabled:" False","stop":"False","rebootAfterPatch":"Auto","intervalOfWeeks":"1","dayOfWeek":"Sunday|Wednesday","startTime":"03:00","category":"ImportantAndRecommended","installDuration":"00:30"}'
シナリオ 2: 修正プログラム適用の既存の構成の変更
更新のスケジュール設定 (“intervalOfWeeks”、“dayOfWeek”、“startTime”) を変更できます。次の例を参考にしてください。
PowerShell スクリプト
# VM を取得
$vm = Get-AzureVM -ServiceName "Your Service Name" -Name "Your VM Name"
# 拡張機能の情報を設定
$ExtensionName="OSPatchingForLinux"
$version="1.0"
$Publisher="Microsoft.OSTCExtensions"
# パラメーターの値を設定
# “intervalOfWeeks” を “2” に、“dayOfWeek” を “Monday” に変更。その他は変更なし
$PrivateConfig = '{
"disabled" : "False",
"stop" : "False",
"rebootAfterPatch" : "Auto",
"intervalOfWeeks" : "2",
"dayOfWeek" : "Monday",
"startTime" : "03:00",
"category" : "ImportantAndRecommended",
"installDuration" : "00:30" }'
$PublicConfig = '{}'
# 構成を拡張機能に適用
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $version -PrivateConfiguration $PrivateConfig -PublicConfiguration $PublicConfig | Update-AzureVM
xPlat コマンド
node bin/azure vm extension set "Your VM Name" OSPatchingForLinux Microsoft.OSTCExtensions 1.0 -i '{}' -t '{"disabled:" False","stop":"False","rebootAfterPatch":"Auto","intervalOfWeeks":"2","dayOfWeek":"Monday","startTime":"03:00","category":"ImportantAndRecommended","installDuration":"00:30"}'
拡張機能は設定の状態を「記憶」しないので注意してください。既存の設定を変更する際、変更しないパラメーターも含めてすべてのパラメーターの値を再度指定しなければなりません。指定しないと既定値にリセットされます。現在の OS の更新設定はステータス ファイルで確認できます。詳細については、「ステータスのチェック」セクションを参照してください。
シナリオ 3: 単発の修正プログラムの適用
重要な修正プログラムなど、更新プログラムをすぐにインストールしたい場合は、OS の更新を単発モードで構成できます。単発モードで構成するには、“startTime” に空の文字列を設定し、他の設定はそのままにします。設定後すぐに OS の更新が開始されます。
単発の修正プログラム適用は 1 回しか実行されません。その後は自動的に直近の定期更新設定に戻ります。
単発モードで “startTime” 以外の設定を変更する必要がある場合は、スクリプトをさらに実行しなければなりません。単発の修正プログラム適用後、各パラメーターの値を指定します。元の設定に戻すには、シナリオ 2 の設定の変更方法の説明を参照してください。
PowerShell スクリプト
# VM を取得
$vm = Get-AzureVM -ServiceName "Your Service Name" -Name "Your VM Name"
# 拡張機能の情報を設定
$ExtensionName="OSPatchingForLinux"
$version="1.0"
$Publisher="Microsoft.OSTCExtensions"
# パラメーターの値を設定
# “startTime” に空の文字列を設定して単発モードに切り替え
$PrivateConfig = '{
"disabled" : "False",
"stop" : "False",
"rebootAfterPatch" : "Auto",
"startTime" : "",
"category" : "ImportantAndRecommended",
"installDuration" : "00:30" }'
$TimeStamp = (Get-Date).Ticks
$PublicConfig = '{"timestamp" : "' + $TimeStamp + '"}'
# 構成を拡張機能に適用
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $version -PrivateConfiguration $PrivateConfig -PublicConfiguration $PublicConfig | Update-AzureVM
xPlat コマンド
node bin/azure vm extension set "Your VM Name" OSPatchingForLinux Microsoft.OSTCExtensions 1.0 -i '{"timestamp":"'`(date +%s)`'"}' -t '{"disabled:" False","stop":"False","rebootAfterPatch":"Auto","startTime":"","category":"ImportantAndRecommended","installDuration":"00:30"}'
その他のシナリオ
OS の更新を停止してデバッグを行うことができます。“stop” パラメーターを “true” に設定すると、現在の更新処理の完了をもって OS の更新が停止します。
PowerShell スクリプト
# VM を取得
$vm = Get-AzureVM -ServiceName "Your Service Name" -Name "Your VM Name"
# 拡張機能の情報を設定
$ExtensionName="OSPatchingForLinux"
$version="1.0"
$Publisher="Microsoft.OSTCExtensions"
# パラメーターの値を設定
# “stop” パラメーターを true に設定すると、現在の更新処理の完了をもって OS の更新が停止します。
$PrivateConfig = '{
"disabled" : "False",
"stop" : "True"
}'
$PublicConfig = '{}'
# 構成を拡張機能に適用
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $version -PrivateConfiguration $PrivateConfig -PublicConfiguration $PublicConfig | Update-AzureVM
xPlat コマンド
node bin/azure vm extension set "Your VM Name" OSPatchingForLinux Microsoft.OSTCExtensions 1.0 -i '{}' -t '{"disabled:" False","stop":"True"}'
手動による OS の更新に切り替えたい場合は、“disable” パラメーターを “true” に設定します。
PowerShell スクリプト
# VM を取得
$vm = Get-AzureVM -ServiceName "Your Service Name" -Name "Your VM Name"
# 拡張機能の情報を設定
$ExtensionName="OSPatchingForLinux"
$version="1.0"
$Publisher="Microsoft.OSTCExtensions"
# パラメーターの値を設定
# “disabled” パラメーターを true に設定すると OSPatching 拡張機能が無効になります。
$PrivateConfig = '{
"disabled" : "True"
}'
$PublicConfig = '{}'
# 構成を拡張機能に適用
Set-AzureVMExtension -ExtensionName $ExtensionName -VM $vm -Publisher $Publisher -Version $version -PrivateConfiguration $PrivateConfig -PublicConfiguration $PublicConfig | Update-AzureVM
xPlat コマンド
node bin/azure vm extension set "Your VM Name" OSPatchingForLinux Microsoft.OSTCExtensions 1.0 -i '{}' -t '{"disabled:" True"}'
ステータスのチェック
OS 更新の構成のステータスと設定をチェックする
- 拡張機能のデプロイメント ステータスをチェックするには、次の PowerShell コマンドを実行します。
Get-AzureDeployment -ServiceName "Your Service Name"
- Azure ポータルに、拡張機能のステータスと最終的な OS の更新設定が表示されるようになる予定です。この機能は今後数週間のうちに提供を開始します。
- 拡張機能のステータスと最終的な OS の更新設定の詳細を確認したい場合は、VM 内の次の場所にあるファイルを参照します。“/var/lib/waagent/Microsoft.OSTCExtensions.OSPatchingForLinux-version/status/”
OS 更新ステータスのチェック
- OS の修正プログラム適用プロセスでは、VM 内の以下のファイルにステータスとエラーが記録されます。“/var/log/azure/Microsoft.OSTCExtensions.OSPatchingForLinux/<version>/extension.log” および “/var/log/waagent.log”
- OS の修正プログラム適用プロセスは、ダウンロードおよびインストールされたパッケージのリストを VM 内のファイルに記録します。ダウンロードされたパッケージは “/var/lib/waagent/package.downloaded” ファイルに記録され、インストールされたパッケージは “/var/lib/waagent/package.patched” ファイルに記録されます。
関連情報
OSPatching は、以下の Linux コマンドを使用して OS の修正プログラムを適用します。OSPatching 拡張機能を使用する際は、競合を回避するため、以下のコマンドを使用するアプリケーションを終了することをお勧めします。通常、これらのコマンドは複数のプロセスで同時に実行することはできません。
No. |
コマンド |
Linux OS |
1 |
apt-get |
Ubuntu |
2 |
yum |
CentOS、Oracle |
3 |
zypper |
SUSE |