EC2 インスタンスの SUSE オペレーティングシステムをアップグレードする際に発生する問題を解決するにはどうすればよいですか?

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) インスタンスの SUSE オペレーティングシステム (OS) をアップグレードしています。アップグレード中に、インスタンスのステータスチェックの失敗、OS の登録解除、zypper コマンドの失敗などの問題が発生します。

解決策

インスタンスステータスチェックの失敗を確認する

OS のアップグレード後にインスタンスのステータスチェックが失敗した場合は、「My EC2 Linux インスタンスがオペレーティングシステムの問題によりインスタンスのステータスチェックに失敗しました。これをトラブルシューティングするにはどうすればいいですか?」を参照してください。

登録エラーを自動的にチェックする (マネージドインスタンスのみ)

インスタンスが AWS Systems Manager コンソールのマネージドインスタンスの場合は、AWSSupport-TroubleshootSUSERegistration 自動化ドキュメントを実行してください。AWS Support-TroubleshootUserRegistration 自動化ドキュメントは、アップグレードの失敗の根本原因を特定するのに役立ちます。詳細については、「SUSE を実行している EC2 インスタンスを SUSE の更新インフラストラクチャに登録して、パッケージをインストールまたは更新できないのはなぜですか?」を参照してください。

登録エラーを手動で検証する

マネージドインスタンスではないインスタンスについては、次の項目を確認してください:

インスタンス登録の主要な前提条件は、次の 2 つです:

  • インスタンス billingProducts または marketplaceProductCodes コード。
  • 送信接続 IP アドレスは AWS IP 範囲に属している必要があります。

1.次のコマンドを実行して、billingProductsまたはmarketplaceProductCodesのコードを確認してください:

# curl -s http://169.254.169.254/latest/dynamic/instance-identity/document

以下は、次のコマンドのサンプル出力です:

 billingProducts" : [ "bp-********" ]

2./etc/hostsファイル内のSMT登録エントリを確認してください。「\ # SMT 登録で追加されました。削除せず、コメントも残してください」という行が続くエントリを探してください。

AWS リージョンごとに異なる SMT サーバーがあります。pint ツールを使わずにリージョンの SMT サーバーの IP アドレスを見つけるには、susepubliccloudinfo.suse.com ウェブサイトにある SMT サーバーの IP アドレスのリストを参照してください。

次のコマンドを実行して、登録ステータスを確認します:

# SUSEConnect -s

上記のコマンド出力で、Status パラメータが [登録済み] または [未登録] であることを確認します。出力が [未登録] の場合は、インスタンスを再登録してみてください。

再登録するには、以前の登録を削除するのがベストプラクティスです。次のコマンドを実行して、認証情報とリポジトリをクリーンアップします:

SUSEConnect --de-register
SUSEConnect --cleanup
rm -f /etc/SUSEConnect
rm -rf /etc/zypp/credentials.d/*
rm -rf /etc/zypp/repos.d/*
rm -f /etc/zypp/services.d/*

また、/etc/hosts ファイル内の以前の登録によって追加された SMT エントリを削除します。それ以外の場合は、新規登録により複数の SMT エントリが作成されます。次のエントリを削除またはコメントしてください::

# vi /etc/hosts

# Added by SMT registration do not remove, retain comment as well
54.246.90.215 smt-ec2.susecloud.net smt-ec2

エントリをクリーンアップしたら、次のコマンドを実行してインスタンスを再登録します:

# registercloudguest --force-new
# SUSEConnect -s

登録に失敗した場合は、/var/log/cloudregister のログを分析して失敗の原因を特定してください。ログ内のエラーの例を以下に示します:

SUSEConnect error: Errno::ENOSPC: No space left on device

一般的な登録エラーのトラブルシューティング

1.次のコマンドを実行して、cloud-regionsrv-clientのバージョンが9.00以上であることを確認します:

rpm -qa | grep cloud-regionsrv-client

以下は、前述のコマンドのサンプルです:

cloud-regionsrv-client-9.0.3-52.16.1
cloud-regionsrv-client-plugin-ec2-1.0.0-52.16.1

以下のコマンドを実行してパッケージを更新します:

# zypper update cloud-regionsrv-client

2.次のコマンドを実行して、必要なパッケージがすべてOSに存在することを確認します:

# rpm -qa | grep -iE "cloud-regionsrv-client|regionServiceClientConfigEC2|ec2metadata|SUSEConnect|libzypp|ruby-common"

以下は、前述のコマンドのサンプル出力です:

libzypp-17.31.8-150400.3.14.1.x86_64
python3-ec2metadata-4.0.0-150000.3.9.1.noarch
ruby-common-2.1-3.15.noarch
suseconnect-ng-1.0.0~git0.faee7c196dc1-150400.3.7.3.x86_64
libsuseconnect-1.0.0~git0.faee7c196dc1-150400.3.7.3.x86_64
suseconnect-ruby-bindings-1.0.0~git0.faee7c196dc1-150400.3.7.3.x86_64
regionServiceClientConfigEC2-4.1.0-150000.3.24.1.noarch
cloud-regionsrv-client-10.0.8-150000.6.86.1.noarch
cloud-regionsrv-client-plugin-ec2-1.0.2-150000.6.86.1.noarch

パッケージが古いか見つからず、オペレーティングシステムが zypper にアクセスできない場合は、オフラインでアップグレードを完了してください。詳細については、suse.com ウェブサイトの「パブリッククラウドインフラストラクチャの更新」を参照してください。「パブリッククラウドインフラストラクチャの更新」のドキュメントには、アップグレードに必要なモジュールと最新の登録パッケージが含まれています:

# wget --no-check-certificate https://52.15.49.139/late_instance_offline_update_ec2_<arch>_<slebase>.tar.gz
# sha1sum late_instance_offline_update_ec2_<arch>_<slebase>.tar.gz
# tar -xf late_instance_offline_update_ec2_<arch>_<slebase>.tar.gz
# cd <arch>
# zypper --no-refresh --no-remote --non-interactive in *.rpm

3.不明なリポジトリを特定します。

SUSEインスタンスにソフトウェアリポジトリがない場合は、「AWSまたはAzure SUSEクラウドインスタンスにソフトウェアリポジトリが見つかりません」を参照して、使用可能なすべてのリポジトリへの新規登録を強制してください。

関連情報

Amazon EC2 での SUSE Linux Enterprise Server (SLES) に関するよくある質問

AWS公式
AWS公式更新しました 10ヶ月前
コメントはありません

関連するコンテンツ