Ansible Tower と Insights を連携してみよう!

みなさんこんにちは。レッドハットの杉村です。Ansible のテクニカルサポートをしています。

突然ですが、Red Hat Insights というサービスはご存知ですか。cloud.redhat.com にて、SaaS として提供されています。RHEL の OS にインストールされているパッケージの状況を調べてくれて、もし脆弱性があったりするとチェックしてパッチを当てるようお勧めしてくれたりするサービスです。

f:id:sugitk:20200521111754p:plain

www.redhat.com

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 が出てきます。

f:id:sugitk:20200521111839p:plain

例えば Patch のタブを選びますと、適用できるパッチの一覧が出てきます。

f:id:sugitk:20200521111902p:plain

チェックボックスにチェックを入れると、Remediate (修復する) のボタンが押せるようになります。

f:id:sugitk:20200521111920p:plain

3つ選んで押してみます。

f:id:sugitk:20200521111940p:plain

この3つのパッチを適用するための、Ansible のプレイブックを作成してくれます。プレイブックに名前をつけて保存します。

f:id:sugitk:20200521111954p:plain

作成したプレイブックは Remediations のメニューから見ることができます。

f:id:sugitk:20200521112009p:plain

Download playbook のボタンを押すと実際にダウンロードすることができますので、興味のある方は中身を見てみてください。

ここからが本題です。

このプレイブックを実行するために ansible-playbook コマンドを実行してもいいのですが、Ansible Tower にはこの Insights と連携する機能があります。

まず Ansible Tower のインベントリーで、この myrhel82 にアクセスできるように設定しておきます。

f:id:sugitk:20200521112032p:plain

RUN COMMANDS から ping で接続できることを確認しておいてください。

f:id:sugitk:20200521112044p:plain

次に、Insights への認証情報を Credentials のメニューから作成します。CREDENTIAL TYPE は Insights を選びます。

f:id:sugitk:20200521112059p:plain

Projects から Insights 用のプロジェクトを作成します。SCM TYPE に Red Hat Insights を選びまして、CREDENTIAL には上で作成した認証情報を入れます。

f:id:sugitk:20200521112257p:plain

myrhel82 のインベントリーに戻って、INSIGHTS CREDENTIAL を設定しますと、REMEDIATE INVENTORY のボタンが出てきます。

f:id:sugitk:20200521112114p:plain

この REMEDIATE INVENTORY のボタンを押しますと、ジョブテンプレートが作成されます。

f:id:sugitk:20200521112319p:plain

Insights の画面で作成したプレイブックが Insights プロジェクトに同期され、プレイブックが選択できるようになります。

f:id:sugitk:20200521112340p:plain

ジョブテンプレートの他の設定を埋めます。myrhel82 に対する認証情報を追加して、適切な名前をつけて保存します。

f:id:sugitk:20200521112401p:plain

保存したら LAUNCH ボタンを押して起動します。5分ほどで実行が終わりました。パッチの適用と再起動がされているようです。

f:id:sugitk:20200521112422p:plain

実際に 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 を連携してくるものもあります。

f:id:sugitk:20200521112450p:plain

これまで見てきた機能と同様に最初は少々設定が必要なのですが、この機能も便利に使えると思います。推奨される設定変更の案内が出てきたら、それに従ってプレイブックを自動的に作成して流すだけになります。ご興味ある方は、ドキュメントをご参照ください。

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!

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。