みなさんこんにちは。レッドハットの杉村です。Ansible のテクニカルサポートをしています。
去年こんな記事を書きました。
最近アーリーアクセス版としてリリースされた Ansible Automation Platform 2.0 を使って、Red Hat Insights との連携を改めて紹介しようと思います。
Red Hat Insights は SaaS として提供しているサービスで、RHEL のサブスクリプションをお持ちであれば追加費用なくご利用いただけます。Insights について詳しく知りたい方は、こちらをご覧ください。
Insights を使うことで、例えばよくご質問いただく「この新しく発行された CVE はいま使っているシステムにどのような影響がありますか」というような問題の対応状況を、お客さま側から能動的に確認していただくことができます。
全体像を大まかに説明するとこのような図になります。
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台ずつ登録してみました。 カスタマーポータルから見るとこのようになっています。
以前は https://cloud.redhat.com として提供されていた Insights のサイトですが、最近 https://console.redhat.com になりました。Red Hat Hybrid Cloud Console という名前になったようです。
Hybrid Cloud Console にアクセスしてみると、このようになっていました。RHEL の欄で 2 Connected systems と認識されていることがわかります。
数字の 2 のところが inventory へのリンクになっていて、クリックすると先ほどの RHEL 2台が登録されていることがわかります。
Dashboard をクリックするといまどのように Insights が判断しているかを知ることができます。他のメニューもあちこち覗いてみてください。
Insights
Dashboard の画面ではいま登録している RHEL には既知の問題はあるものの、インストールされているパッケージの状況から判断すると修復を推奨するような問題はなかったことがわかります。右側の Advisor recommendations です。
Advisor からやれることがないので、Vulnerability -> CVEs を見てみます。いまインストールされている状況には影響がないものではありますが、既知の問題としてはたくさん見つかりました。
右の方にある Ansible のマークがある欄にチェックが入っているものは、問題を修復するためのプレイブックをここで生成できるものです。試しに一つ CVE-2021-3621 をクリックしてみます。RHEL 8.2 と 8.4 の両方に適用できるものであることはわかりました。チェックを入れると Remediate のボタンが押せるようになります。この CVE は RHSA-2021:3151 で更新されるということもわかります。
Remediate ボタンを押すと、修復のためのプレイブックを作成します。適当に名前をつけて保存しておきます。一度作ったプレイブックに追加していくこともできます。
メニューから Remediations を開くと、プレイブックが作られて保存されていることがわかります。ダウンロードすることもできます。
ここからプレイブックをダウンロードしてきて Ansible を起動するサーバから実行して実際の適用作業を実施していただくことができるのですが、せっかくなので Ansible Automation Platform と連携して実行しようというのが今回の記事の目的です。
Ansible Automation Platform 2.0
Ansible Automation Platform 2.0 は7月半ばにリリースされました。
こちらに情報がまとまっていますので、ご興味ある方はご覧ください。従来の Ansible Tower と呼ばれていたものは、Ansible Controller 4.0 として生まれ変わりました。
Ansible Automation Platform 2.0 と Insights の連携
ようやくここからが本題です。
Ansible Tower の時代でもできたことではあるのですが、Ansible Automation Platform 2.0 (AAP 2.0) では機能が改善され、より簡単に使いやすくなりました。
まずは認証情報として、Insights にアクセスするためのものと、今回対象としている2台のRHELサーバのためのものをそれぞれ作ります。
Insights と連携するためのインベントリを作ります。この時点では空っぽです。
このインベントリで、Insights から構成を取得するためのインベントリーソースを定義します。これは AAP 2.0 での新機能です。この検証環境では名前解決ができないので、compose: の定義を使って ansible_host 変数をIPアドレスに置き換えています。
定義したら Sync を押してみます。ジョブが実行されて、Insights からホスト情報をインベントリに取り込みました。
先ほど定義したインベントリに2台登録されていることがわかります。
この2台にチェックを入れて、Run Command から ad hoc コマンドとして ping を実行してみます。
Module は ping を選びます。Enable privilege escalation にもチェックを入れておきます。
Execution Environment を選びます。今回は Default にしてみます。Default EE では、ansible-core 2.11 を使います。
認証情報を選んで起動します。
正しく疎通確認できました。ping モジュールでの疎通ができたということは、このインベントリ情報と認証情報を使って対象の RHEL サーバに Ansible から操作ができるということが確認できたということです。
Insights のインベントリについて連携できることがわかりました。次に、プレイブックについても連携してみます。
Projects から Insights 用のプロジェクトを作ります。Source Control として Red Hat Insights を選びます。設定を保存するとすぐに同期します。
この同期したプロジェクトを利用するジョブテンプレートを作成します。インベントリとプロジェクトを指定すると、プレイブックのプルダウンリストに Insights の Console 画面で作ったものが取り込まれていることがわかります。
Ad hoc コマンドを実行したときと同じように Execution Environment や認証情報、Privilege Escalation のチェックを入れて、ジョブテンプレートを保存します。
Launch ボタンを押して実行すると実際にアップデートが走ります。再起動も必要だったこともあり、2分弱ほどで終わりました。
この対象の 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 側でアーカイブしておきます。
振り返り
設定手順を一通り説明したため、大変なように感じられたかもしれません。
一度一通り流れる方法が確立できれば、あとは普段はこのように運用していくことができます。
- 更新のメールを受け取る
- Hybrid Cloud Console の Insights で Dashboard から影響を確認する
- 修正が必要であれば Advisor recommendations や CVEs からプレイブックを作成する
- Automation Controller で同期して実行する
- 終わったらアーカイブする
おわりに
今回は Ansible Automation Platform 2.0 を使った Red Hat Insights との連携について紹介しました。以前の Ansible Tower と比べると画面やアーキテクチャが一新されており、より簡単に実行できるようにもなりました。
Developer Subscription でもお試しいただけますので、ご興味持たれましたら試してみてください。
Happy Automation!