みなさんこんにちは。レッドハットの杉村です。Ansible のテクニカルサポートをしています。
突然ですが、Red Hat Insights というサービスはご存知ですか。cloud.redhat.com にて、SaaS として提供されています。RHEL の OS にインストールされているパッケージの状況を調べてくれて、もし脆弱性があったりするとチェックしてパッチを当てるようお勧めしてくれたりするサービスです。
RHEL 8.2 を用意してみました。ホスト名は myrhel82 としています。ログインしますと、このように出てきます。
This system is not registered to Red Hat Insights. See https://cloud.redhat.com/ To register this system, run: insights-client --register
さっそくやってみましょう。あらかじめ subscription-manager で登録してある必要があります。
[root@myrhel82 ~]# insights-client --register You successfully registered xxxxxxxx-8b27-4828-8cf8-xxxxxxxxxxxx to account 99999999. Successfully registered host myrhel82 Automatic scheduling for Insights has been enabled. Starting to collect Insights data for myrhel82 sed: /sys/kernel/debug/sched_features を読み込めません: 許可されていない操作です Uploading Insights data. Successfully uploaded report from myrhel82 to account 99999999. View the Red Hat Insights console at https://cloud.redhat.com/insights/
sed のエラーが出ていますが特に気にせず進めてください。
さっそく Insights にアクセスしてみます。左側の Inventory のメニューをクリックしますと、いま登録した myrhel82 が出てきます。
例えば Patch のタブを選びますと、適用できるパッチの一覧が出てきます。
チェックボックスにチェックを入れると、Remediate (修復する) のボタンが押せるようになります。
3つ選んで押してみます。
この3つのパッチを適用するための、Ansible のプレイブックを作成してくれます。プレイブックに名前をつけて保存します。
作成したプレイブックは Remediations のメニューから見ることができます。
Download playbook のボタンを押すと実際にダウンロードすることができますので、興味のある方は中身を見てみてください。
ここからが本題です。
このプレイブックを実行するために ansible-playbook コマンドを実行してもいいのですが、Ansible Tower にはこの Insights と連携する機能があります。
まず Ansible Tower のインベントリーで、この myrhel82 にアクセスできるように設定しておきます。
RUN COMMANDS から ping で接続できることを確認しておいてください。
次に、Insights への認証情報を Credentials のメニューから作成します。CREDENTIAL TYPE は Insights を選びます。
Projects から Insights 用のプロジェクトを作成します。SCM TYPE に Red Hat Insights を選びまして、CREDENTIAL には上で作成した認証情報を入れます。
myrhel82 のインベントリーに戻って、INSIGHTS CREDENTIAL を設定しますと、REMEDIATE INVENTORY のボタンが出てきます。
この REMEDIATE INVENTORY のボタンを押しますと、ジョブテンプレートが作成されます。
Insights の画面で作成したプレイブックが Insights プロジェクトに同期され、プレイブックが選択できるようになります。
ジョブテンプレートの他の設定を埋めます。myrhel82 に対する認証情報を追加して、適切な名前をつけて保存します。
保存したら LAUNCH ボタンを押して起動します。5分ほどで実行が終わりました。パッチの適用と再起動がされているようです。
実際に myrhel82 にログインして確認してみると、確かにパッケージがアップデートされていることがわかります。
[root@myrhel82 ~]# dnf history info 2 Updating Subscription Management repositories. トランザクション ID : 2 開始時間 : 2020年05月21日 10時53分20秒 開始 rpmdb : 1354:9aece94c2d19a22084c5189313072949f2e52369 終了時間 : 2020年05月21日 10時54分07秒 (47 秒) 終了 rpmdb : 1357:56e3a93ed16b194cc0b2698e6b96c2b9e853407c ユーザー : <sugimura> 終了コード : 成功 Releasever : 8 コマンドライン : update -d 2 -y --advisory RHBA-2020:2240 --advisory RHSA-2020:2031 --advisory RHSA-2020:2102 変更されたパッケージ: インストール kernel-core-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms インストール kernel-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms インストール kernel-modules-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms Upgrade firefox-68.8.0-1.el8_2.x86_64 @rhel-8-for-x86_64-appstream-rpms Upgraded firefox-68.6.0-1.el8_1.x86_64 @@System Upgrade dnsmasq-2.79-11.el8_2.1.x86_64 @rhel-8-for-x86_64-appstream-rpms Upgraded dnsmasq-2.79-11.el8.x86_64 @@System Upgrade bpftool-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms Upgraded bpftool-4.18.0-193.el8.x86_64 @@System Upgrade python3-perf-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms Upgraded python3-perf-4.18.0-193.el8.x86_64 @@System Upgrade kernel-tools-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms Upgraded kernel-tools-4.18.0-193.el8.x86_64 @@System Upgrade kernel-tools-libs-4.18.0-193.1.2.el8_2.x86_64 @rhel-8-for-x86_64-baseos-rpms Upgraded kernel-tools-libs-4.18.0-193.el8.x86_64 @@System [root@myrhel82 ~]#
ここまで見てきて、最初の設定は少々面倒だったかもしれません。一度一通り流すことができますと、あとはプレイブックを Insights で生成して Tower で流すだけというようにとても簡単にできるようになります。
他にも Ansible Tower と Insights の連携の機能としましては Advisor を連携してくるものもあります。
これまで見てきた機能と同様に最初は少々設定が必要なのですが、この機能も便利に使えると思います。推奨される設定変更の案内が出てきたら、それに従ってプレイブックを自動的に作成して流すだけになります。ご興味ある方は、ドキュメントをご参照ください。
https://docs.ansible.com/ansible-tower/latest/html/userguide/insights.html
Insights でプレイブックを自動的に作成して Ansible Tower で実行するという一連の流れについて紹介しました。ご興味持っていただけましたらうれしく思います。
Ansible Towerの評価ライセンスリクエストはこちらからご利用いただけます。
https://www.ansible.com/products/tower/trial
Happy Automation!