新しくなった Ansible Automation Platform と Insights を連携してみよう!

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

去年こんな記事を書きました。

rheb.hatenablog.com

最近アーリーアクセス版としてリリースされた Ansible Automation Platform 2.0 を使って、Red Hat Insights との連携を改めて紹介しようと思います。

Red Hat Insights は SaaS として提供しているサービスで、RHEL のサブスクリプションをお持ちであれば追加費用なくご利用いただけます。Insights について詳しく知りたい方は、こちらをご覧ください。

Insights を使うことで、例えばよくご質問いただく「この新しく発行された CVE はいま使っているシステムにどのような影響がありますか」というような問題の対応状況を、お客さま側から能動的に確認していただくことができます。

www.redhat.com

全体像を大まかに説明するとこのような図になります。

f:id:sugitk:20210827085144p:plain

RHEL を登録

RHEL をインストールしたら、subscription-manager と insights-client で登録します。インストーラの処理の中で登録することもできますが、改めてコマンドラインから進めるとこのようになります。sed のエラーは気にしないでください。

[sugimura@localhost ~]$ sudo -s
[sudo] sugimura のパスワード:
[root@localhost sugimura]# 
[root@localhost sugimura]# hostnamectl set-hostname myrhel82
[root@localhost sugimura]# hostname
myrhel82
[root@localhost sugimura]# 
[root@localhost sugimura]# subscription-manager register
登録中: subscription.rhsm.redhat.com:443/subscription
ユーザー名: xxxxxxxxxxxx@example.com
パスワード: 
このシステムは、次の ID で登録されました: XXXXXXXXXXXXXXXXXXXXXXXXXXX
登録したシステム名: myrhel82
[root@localhost sugimura]# 
[root@localhost sugimura]#  dnf install insights-client -y
...
[root@localhost sugimura]# insights-client --register
You successfully registered XXXXXXXXXXXXXXXXXXXXXXXXXXX to account 999999999.
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 999999999.
View the Red Hat Insights console at https://cloud.redhat.com/insights/
[root@localhost sugimura]# 

RHEL 8.2 と 8.4 のものをそれぞれ1台ずつ登録してみました。 カスタマーポータルから見るとこのようになっています。

f:id:sugitk:20210827085250p:plain

以前は https://cloud.redhat.com として提供されていた Insights のサイトですが、最近 https://console.redhat.com になりました。Red Hat Hybrid Cloud Console という名前になったようです。

Hybrid Cloud Console にアクセスしてみると、このようになっていました。RHEL の欄で 2 Connected systems と認識されていることがわかります。

f:id:sugitk:20210827085415p:plain

数字の 2 のところが inventory へのリンクになっていて、クリックすると先ほどの RHEL 2台が登録されていることがわかります。

f:id:sugitk:20210827085433p:plain

Dashboard をクリックするといまどのように Insights が判断しているかを知ることができます。他のメニューもあちこち覗いてみてください。

f:id:sugitk:20210827085457p:plain

Insights

Dashboard の画面ではいま登録している RHEL には既知の問題はあるものの、インストールされているパッケージの状況から判断すると修復を推奨するような問題はなかったことがわかります。右側の Advisor recommendations です。

Advisor からやれることがないので、Vulnerability -> CVEs を見てみます。いまインストールされている状況には影響がないものではありますが、既知の問題としてはたくさん見つかりました。

f:id:sugitk:20210827085541p:plain

右の方にある Ansible のマークがある欄にチェックが入っているものは、問題を修復するためのプレイブックをここで生成できるものです。試しに一つ CVE-2021-3621 をクリックしてみます。RHEL 8.2 と 8.4 の両方に適用できるものであることはわかりました。チェックを入れると Remediate のボタンが押せるようになります。この CVE は RHSA-2021:3151 で更新されるということもわかります。

f:id:sugitk:20210827085607p:plain

Remediate ボタンを押すと、修復のためのプレイブックを作成します。適当に名前をつけて保存しておきます。一度作ったプレイブックに追加していくこともできます。

f:id:sugitk:20210827085811p:plain

メニューから Remediations を開くと、プレイブックが作られて保存されていることがわかります。ダウンロードすることもできます。

f:id:sugitk:20210827085827p:plain

f:id:sugitk:20210827085845p:plain

ここからプレイブックをダウンロードしてきて Ansible を起動するサーバから実行して実際の適用作業を実施していただくことができるのですが、せっかくなので Ansible Automation Platform と連携して実行しようというのが今回の記事の目的です。

Ansible Automation Platform 2.0

Ansible Automation Platform 2.0 は7月半ばにリリースされました。

こちらに情報がまとまっていますので、ご興味ある方はご覧ください。従来の Ansible Tower と呼ばれていたものは、Ansible Controller 4.0 として生まれ変わりました。

access.redhat.com

docs.ansible.com

Ansible Automation Platform 2.0 と Insights の連携

ようやくここからが本題です。

Ansible Tower の時代でもできたことではあるのですが、Ansible Automation Platform 2.0 (AAP 2.0) では機能が改善され、より簡単に使いやすくなりました。

まずは認証情報として、Insights にアクセスするためのものと、今回対象としている2台のRHELサーバのためのものをそれぞれ作ります。

f:id:sugitk:20210827085944p:plain

f:id:sugitk:20210827090002p:plain

Insights と連携するためのインベントリを作ります。この時点では空っぽです。

f:id:sugitk:20210827090029p:plain

このインベントリで、Insights から構成を取得するためのインベントリーソースを定義します。これは AAP 2.0 での新機能です。この検証環境では名前解決ができないので、compose: の定義を使って ansible_host 変数をIPアドレスに置き換えています。

f:id:sugitk:20210827090056p:plain

定義したら Sync を押してみます。ジョブが実行されて、Insights からホスト情報をインベントリに取り込みました。

f:id:sugitk:20210827090137p:plain

先ほど定義したインベントリに2台登録されていることがわかります。

f:id:sugitk:20210827090156p:plain

この2台にチェックを入れて、Run Command から ad hoc コマンドとして ping を実行してみます。

Module は ping を選びます。Enable privilege escalation にもチェックを入れておきます。

f:id:sugitk:20210827090314p:plain

Execution Environment を選びます。今回は Default にしてみます。Default EE では、ansible-core 2.11 を使います。

f:id:sugitk:20210827090337p:plain

認証情報を選んで起動します。

f:id:sugitk:20210827090352p:plain

正しく疎通確認できました。ping モジュールでの疎通ができたということは、このインベントリ情報と認証情報を使って対象の RHEL サーバに Ansible から操作ができるということが確認できたということです。

f:id:sugitk:20210827090408p:plain

Insights のインベントリについて連携できることがわかりました。次に、プレイブックについても連携してみます。

Projects から Insights 用のプロジェクトを作ります。Source Control として Red Hat Insights を選びます。設定を保存するとすぐに同期します。

f:id:sugitk:20210827090455p:plain

この同期したプロジェクトを利用するジョブテンプレートを作成します。インベントリとプロジェクトを指定すると、プレイブックのプルダウンリストに Insights の Console 画面で作ったものが取り込まれていることがわかります。

f:id:sugitk:20210827090520p:plain

Ad hoc コマンドを実行したときと同じように Execution Environment や認証情報、Privilege Escalation のチェックを入れて、ジョブテンプレートを保存します。

f:id:sugitk:20210827090543p:plain

Launch ボタンを押して実行すると実際にアップデートが走ります。再起動も必要だったこともあり、2分弱ほどで終わりました。

f:id:sugitk:20210827090559p:plain

この対象の RHEL にログインしてみると、Insights で作った CVE-2021-3621 のための修正がきちんと反映されていることがわかります。

[sugimura@myrhel84 ~]$ sudo dnf history
[sudo] sugimura のパスワード:
Updating Subscription Management repositories.
ID     | コマンドライン                                                                                                                              | 日時             | 動作           | 変更さ 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
     5 | upgrade -v -y --cve CVE-2021-3621                                                                                                           | 2021-08-26 17:00 | Upgrade        |    9   
…
[sugimura@myrhel84 ~]$
[sugimura@myrhel84 ~]$ sudo dnf history info 5
Updating Subscription Management repositories.
トランザクション ID : 5
開始時間            : 2021年08月26日 17時00分02秒
開始 rpmdb          : 605:88810ebe1e6466fbbdc177ac243764aa0e6f2576
終了時間            : 2021年08月26日 17時00分03秒 (1 秒)
終了 rpmdb          : 605:694a2971837161a7a95ac54bff516b0b93ccabe5
ユーザー            :  <sugimura>
終了コード          : 成功
Releasever     : 8
コマンドライン      : upgrade -v -y --cve CVE-2021-3621
コメント        : 
変更されたパッケージ:
    Upgrade  libsss_autofs-2.4.0-9.el8_4.2.x86_64    @rhel-8-for-x86_64-baseos-rpms
...

正しく実行できたら、Insights 側でアーカイブしておきます。

f:id:sugitk:20210827090623p:plain

振り返り

設定手順を一通り説明したため、大変なように感じられたかもしれません。

一度一通り流れる方法が確立できれば、あとは普段はこのように運用していくことができます。

  • 更新のメールを受け取る
  • Hybrid Cloud Console の Insights で Dashboard から影響を確認する
  • 修正が必要であれば Advisor recommendations や CVEs からプレイブックを作成する
  • Automation Controller で同期して実行する
  • 終わったらアーカイブする

おわりに

今回は Ansible Automation Platform 2.0 を使った Red Hat Insights との連携について紹介しました。以前の Ansible Tower と比べると画面やアーキテクチャが一新されており、より簡単に実行できるようにもなりました。

Developer Subscription でもお試しいただけますので、ご興味持たれましたら試してみてください。

rheb.hatenablog.com

Happy Automation!

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