OMS Agent関連のパッケージが原因でCent OSのyum updateがうまく行かなかった時の対応

 

Cent OS 7のAzure Virtual Machineで検証を行っていた所、yum updateがエラーになっていました。原因を調べてみると、OMSエージェント関連のパッケージの影響でエラーになっていたようです。
実際に発生した事象と対応した内容を残しておきます。

1.ある日突然、yum updateが失敗するようになる

定期的にyum updateを実施していたのですが、ある日から失敗し続けていました。
実際に手動でアップデートを実施した所、以下のメッセージが表示されました。

[ユーザー名@host名 ]$ yum -y update

Downloading packages:
scx-1.6.4-7.universal.x64.rpm FAILED
https://packages.microsoft.com/rhel/7/prod/scx-1.6.4-7.universal.x64.rpm: [Errno -1] パッケージは予定したダウンロードと一致しません。

提案: 「yum –enablerepo=packages-microsoft-com-prod clean metadata」の実行
他のミラーを試します。

Error downloading packages:
scx-1.6.4-7.x86_64: [Errno 256] No more mirrors to try.

最初にエラーメッセージ内で提案された、yum –enablerepo=packages-microsoft-com-prod clean metadataを実行してみたのですが、事象は改善しませんでした。

パッケージ名がscxであり、かつMSのサイトからのダウンロード失敗なので、OMSエージェント関連のアップデート方法が間違っているかと考えました。

2.手動でOMSエージェントのアップデートをしてみる

次に手動でOMSエージェントのアップデート試してみました。
まず、以下のサイトでOMSエージェントの最新Verを確認します。

https://github.com/Microsoft/OMS-Agent-for-Linux/releases

2020年4月23日現在の最新Verは、omsagent-1.12.15-0.universal.x64.shでしたので、これをWgetでダウンロードし、アップデートを行います。
なお、root権限を持たないユーザーの場合はsudoで実行して下さい。また今回は/tmpで作業を実施しています。

#wgetコマンドでパッケージをダウンロードします。

[ユーザー名@host名 tmp]$ wget https://github.com/microsoft/OMS-Agent-for-Linux/releases/download/OMSAgent_v1.12.15-0/omsagent-1.12.15-0.universal.x64.sh

#以下のようにアップグレードコマンドを実行します。

[ユーザー名@host名 tmp]$ sh omsagent-1.12.15-0.universal.x64.sh –upgrade

#成功すると最後に以下のメッセージが表示されます。エラーの場合はCodeが0以外になります。

Shell bundle exiting with code 0

#omsエージェントのサービスを再起動します。

[ユーザー名@host名 tmp]$ /opt/microsoft/omsagent/bin/service_control restart

#omsエージェントのステータスを確認します。

[ユーザー名@host名 tmp]$ /opt/microsoft/omsagent/bin/omsadmin.sh -l

#正常動作している場合は、Status: Onboarded(OMSAgent Running)と表示されます。

Primary Workspace: ワークスペースID Status: Onboarded(OMSAgent Running)

これでOMSエージェントのアップデートが無事終わりました。

しかし、再度yum -y updateを行っても、最初と同じくscxのパッケージでエラーになりました。

3.scxのパッケージをrpmコマンドで個別アップデートをしてみた

やはり個別でアップデートが必要そうという事でエラーとなっている、scxのパッケージを個別でアップデートしてみました。
まず、以下のサイトでscxのパッケージの最新Verを確認します。

https://packages.microsoft.com/rhel/7/prod/

2020年4月23日現在の最新Verは、scx-1.6.4-7.universal.x64.rpmでしたので、これをWgetでダウンロードし、rpmコマンドでアップデートを行います。
yumコマンド実行時のエラーメッセージで表示されているVerと同じだったのですが、yumコマンドでダウウンロードできない理由は不明です。
先ほどと同様で、root権限を持たないユーザーの場合はsudoで実行して下さい。また今回は/tmpで作業を実施しています。

#wgetコマンドでパッケージをダウンロードします。

[ユーザー名@host名 tmp]$ wget https://packages.microsoft.com/rhel/7/prod/scx-1.6.4-7.universal.x64.rpm

#rpmコマンドでscxパッケージをアップグレードします。

[ユーザー名@host名 tmp]$ rpm -Uvh scx-1.6.4-7.universal.x64.rpm

#omsエージェントのステータスを確認します。

[ユーザー名@host名 tmp]$ /opt/microsoft/omsagent/bin/omsadmin.sh -l

#正常動作している場合は、Status: Onboarded(OMSAgent Running)と表示されます。

Primary Workspace: ワークスペースID Status: Onboarded(OMSAgent Running)

これでSCXパッケージのアップデートが無事終わりました。

これで再度yum -y updateを行ったところ、無事出来ました。

4.yum.confの除外設定に入れた方が良いのかも

今回は、パッケージ自体のアップデートをを実施しましたが、yum.confに、exclude=パッケージ名と記載する事で、yum対象外にする事が可能です。
環境の状況次第ですが、場合によっては対象外としておき、個別でアップデートを実施するようにした方が良いのかもしれません。