こんにちは!クラウド事業部の高橋です。
本記事ではOracle Cloud Infrastructure (OCI)の監視・運用管理機能の一つである、「OS管理ハブ」を活用し、既存もしくは新規のインスタンスに対してパッチを適用する手順をハンズオン形式でご紹介します。 私自身、最近インスタンスのセキュリティパッチ適用について、自動化できないものか?と頭を悩ませており、SREやインフラエンジニア、情報システム部署の方であれば常に浮かぶ悩みであるかと思います。 そこで、本記事では実際の設定手順をスクリーンショット付きで解説していきます。「OS管理ハブって結局何?」という方や、「パッチ当てを自動化するのって難しそう...。」という方でも、読み進められるように構成していますので、最後までお付き合いいただけますと嬉しいです! OCI OS管理ハブとは、OCIが提供する管理ソリューションのことを指します。OCI上のインスタンスと、オンプレミス / サードパーティ・クラウド上のインスタンスを管理対象とすることが可能で、パッケージの更新・追加インストール・アンインストールなどの操作が可能です。またこれらのパッケージの管理状態をコンソール上で可視化できる機能を提供します。
サードパーティー・クラウドはAWS、Microsoft Azureをサポートしています。 OCIの共有セキュリティモデルにおいては、アプリケーション、ミドルウェア、OSの管理はユーザーの責任とされています。
そのため、OSのパッチ適用やパッケージのインストール管理、OS障害への対応などは、ユーザー自身が行う必要があります。 こうした運用負荷を軽減するために活用できるのが OS管理ハブです。
OS管理ハブを利用することで、パッチ適用などの作業を自動化し、ユーザー側の管理コストを削減することが期待できます。 -> アカウント作成は以下の記事がおすすめです。
techblog.ap-com.co.jp -> VCN作成は公式のチュートリアル記事を参考にどうぞ。
oracle-japan.github.io -> インスタンス作成は公式のチュートリアル記事を参考にどうぞ。
oracle-japan.github.io
インスタンス作成前にOS管理ハブを有効化しておいても良いですし、作成後に有効化しても問題ありません。
今回はインスタンス作成後にOS管理ハブを有効化する手順を記載しています。 大きく分けて以下の流れで設定していきます。 OS管理ハブのページへ移動します。以下画像のように、有効化をしていない・初めて利用する状態だとポリシーに問題があるメッセージが表示されます。
ちょっとびっくりしますが、慌てずに、OS管理ハブの有効化を押下してください。
画面遷移しますと、以下のようにポリシー・アドバイザ画面が表示されます。ここでは現在不足しているポリシーについて一覧化されています。
次を押下しましょう。
画面遷移しますと、不足しているグループ・ポリシーをOCI側が自動で作成してくれる親切な設計になっています。
一応確認をし、既存リソースやポリシーに影響がなさそうであれば設定を押下しましょう。
もし、OS管理ハブに利用するポリシーを手動作成される場合は、以下の公式ドキュメントを参考にどうぞ。
docs.oracle.com ソフトウェア・ソースとは簡単に言うとソフトウェアを格納しているリポジトリのことです。
種類がいくつかあり、ベンダーが提供しているベンダー・ソフトウェア・ソースと、ベンダー・ソフトウェア・ソースから必要な部分をユーザーが絞り込んだカスタム・ソフトウェア・ソースがあります。
今回はカスタム・ソフトウェア・ソースを用いて設定していきます。 まず、OS管理ハブページからソフトウェア・ソースを選択し、アクションからCreate custom software sourceを押下します。
次に、Nameには任意の名前を入れ、説明はオプションですので入れなくても結構です。次を押下します。 検証環境ではどちらもONもしくはAutomatically resolve package and module dependenciesだけONにしておくと良いかもしれませんが、本番環境では事前にアップデートの影響テストをする必要があると思われるので、どちらもOFFにしておく方が良いかもしれません。
OSベンダー、OSバージョン、アーキテクチャに追加したいインスタンスに対応した情報を選択し、コンパートメントはルートコンパートメントを選択します。 ※ 今回、私が利用するインスタンスはOracle Linux 9で、シェイプがVM.Standard.A1.Flexなのでaarch64となっています。ソースはol9_baseos_latest-aarch64を選択しました。 ここで、ルートコンパートメントに何も表示されない場合、ルートコンパートメントにベンダー・ソフトウェア・ソースが追加されていません。
4-7を確認し、ルートコンパートメントにベンダー・ソフトウェア・ソースを追加してください。
次に表示される画面はパッケージのフィルタリング画面です。冒頭にも述べたように、ベンダー・ソフトウェア・ソースから必要なパッケージをフィルタリングしたものをカスタム・ソフトウェア・ソースとなりますので、ここで必要なパッケージを選ぶことができます。 今回は特に指定せず、デフォルト状態で次を押下します。作成サマリーが表示されましたら、送信を押下します。
ソフトウェア・ソース画面に作成したカスタム・ソフトウェア・ソースが表示されていれば、作成完了です!
プロファイルとはインスタンスに適用するソフトウェア・ソース、ライフサイクル環境を指定したものです。
パッチ適用のルールや設定を定義し、複数のインスタンスにも適用可能な設定テンプレートのことですね。
1つ汎用的なプロファイルを作成してしまえば、運用の一元化も可能になります。
また、今回は割愛しますが、複数のインスタンスをグループ単位で管理することもできるグループ機能もあります。 さて、早速作成していきましょう。OS管理ハブページからプロファイルを選択し、作成を押下します。
次に、Create profile画面が表示されますので、設定していきます。 Nameにはプロファイル名を入力し、Profile instance typeにはOracle Cloud Infrastructureにチェックを入れます。 OSベンダーにはOracle、OSバージョンにはOracle Linux9、アーキテクチャにはaarch64を選択し、タイプにはSoftware sourceにチェックを入れます。
(適宜、お使いのインスタンスに合わせて変更してください。) Software source compartmentには、先ほどカスタム・ソフトウェア・ソースを作成したコンパートメントを設定します。 ソフトウェア・ソースには先ほど作成したtest_os_management_hubを選択します。 パラメーターに問題がなければ、作成を押下します。
プロファイル一覧画面に作成したプロファイルが表示されていれば、作成完了です!
いよいよ、ここまでやってきました。既存インスタンスをOS管理ハブに登録してみましょう!
事前に作成したインスタンスの詳細ページを開きます。管理タブを押下します。
管理ページが表示されたら、OS管理ハブ・エージェントと管理エージェントを1つずつ選択し、...から有効化を押下します。
OS管理ハブ・エージェントの有効化時には、プロファイルの設定画面が開かれますので、確認をしてプロファイルの設定を押下します。
エージェントが起動するには多少時間がかかりました。10〜15分程度は気長に待ちましょう。有効で実行中表示になれば、完了です。
(筆者は待ちきれずにインスタンスの再起動をしてしまいました...。待ち時間が長くなるだけなのでお勧めしません。)
また、インスタンスのOS管理タブからは現在のインスタンスのパッケージ状態が確認可能となります。
最後に、パッケージの更新を実際に実行してみましょう。
今回は手動で実行してみます。 まずは、OS管理ハブページのインスタンスを開きます。インスタンス名が表示されたら、押下します。
277件のアップデートが検出されていますね!かなり大量です。これらを手作業でアップデートするのは大変ですよね...。
ちなみに、左下のFiltersからアップデートのタイプをフィルタリングできます。
まずは、本当にアップデートができているのかを検証するために、Bastionサービスを利用してアップデート前のバージョンを確認してみます。
なんでも良いですが、一旦expatを確認してみましょう。 現状のバージョンはコンソールで表示されているInstalled version 2.5.0-3.el9_5.3と一致しているようですね!
ではチェックを入れて、更新を押下してみます。
ジョブ名は特に変更せず、今回はスケジュールも即時実行をするため、即時実行にチェックを入れて、更新を押下します。
※ ちなみに、スケジュール実行を選択すると、以下の画像のように日付・時間まで設定可能です。自動リトライもあるので便利ですね。
パッケージ更新ジョブを実行すると、ジョブ画面にScheduled jobs、In progress jobs、Completed jobsタブが表示されます。
進行中のジョブを確認したいので、In progress jobsを開くと、expatの表示がされますね。
無事に完了すると、Completed jobsに表示され、StatusがSuccessfulとなります。
では実際にインスタンスにログインし、expatのバージョンを確認してみましょう。 無事にAvailable versionである2.5.0-5.el9_6が適用されていることが確認できました。
以上、OS管理ハブを利用して既存インスタンスのパッチ適用をやってみた検証結果となります。
お疲れ様でした! 検証中に起きたエラーについて、備忘録として記載しておきます。 以下のようにAvailable software sourcesにソースが表示されないことがありました。これはルートコンパートメントにベンダー・ソフトウェア・ソースが存在しないからです。
先にルートコンパートメントに切り替えて、ベンダー・ソフトウェア・ソースを設定しておきましょう。
NetworkManagerというパッケージを更新したところ、ジョブのステータスがFailedとなりました。再実行(re-run)しても現象が変わらず。
未検証ではありますが、NetworkManager はネットワーク制御を担うデーモンであるため、Bastionサービス経由でSSH接続中にパッチを適用すると、ネットワークの一時切断が発生し、処理が失敗する可能性が高いと考えられます。 したがって、OS管理ハブで検出されたパッケージのアップデートは一部失敗する可能性もあるため、注意が必要です。
ちなみに、失敗時にログも確認できますので、トラブルシューティングは可能です。 ※ NetworkManagerのエラーログは出ていませんでした...。時間があれば調査してみたいと思います。
ここまでお読みいただき、ありがとうございました! いかがでしたでしょうか?
実際にやってみると、設定自体はそこまで難しくなく、プロファイルやグループを作成し、スケジュールを設定するだけで、パッチ適用を自動化できるという点は非常に便利だと感じました。 一方で、すべてのパッケージが必ずしも正常に更新されるわけではなく、適用内容によっては本番環境に影響を与えるリスクもあるため、メリットとデメリットを十分に把握したうえでの導入判断が重要だと思います。 ※ 参考にしたOracle OS管理ハブ概要スライド 私達クラウド事業部はクラウド技術を活用したSI/SESのご支援をしております。 また、一緒に働いていただける仲間も募集中です!
ご興味持っていただけましたらぜひお声がけください。
1. はじめに
2. OS管理ハブって何?
3. 前提条件
4. 設定手順
4-1. OS管理ハブの有効化(ポリシー作成)
4-2. ソフトウェア・ソースの設定
4-3. プロファイルの設定
4-4. インスタンスの登録
4-5. パッケージの更新ジョブを実行
[opc@instance-20250615 ~]$ rpm -q expat
expat-2.5.0-3.el9_5.3.aarch64
[opc@instance-20250615 ~]$ rpm -q expat
expat-2.5.0-5.el9_6.aarch64
4-6. 検証中に起きたエラーまとめ
4-6-1.カスタム・ソフトウェア・ソース作成時にAvailable software sourcesにソースが表示されない
4-6-2. 一部パッケージが更新できない(Failedとなる。)
5. まとめ
おわりに