てくなべ (tekunabe)

ansible / network automation / 学習メモ

[Ansible/AAP] 書籍「Demystifying Ansible Automation Platform」はAAPの全体と自動化と応用が学べる貴重な書籍

はじめに

2022/09/30 に Ansible Automation Platform の Automation Controller を中心とした各プロダクト、サービスについて解説している「Demystifying Ansible Automation Platform」という書籍が発売されました。

demystifying と言う言葉は今回はじめて知りました。「(…の)神秘を解く」という意味だそうです。

www.packtpub.com

https://www.amazon.co.jp/dp/1803244887www.amazon.co.jp

先日の記事で軽く紹介しました。完璧に読み込んだというわけではないですが、一通目を通したので概要や気づきなどをご紹介します。

Acknowledgements(謝辞)

Thank you, Sean Sullivan and, Packt Publishing, for the opportunity to review!

本書については、著者の Sean Sullivan 氏よりレビューのご依頼をいただき、Packt Publishing より書籍データを頂戴いたしました。今回はこのような機会をいただきありがとうございました。

Ansible Fest 2022 では Using Configuration as Code on Ansible Automation Platform という、CaC 関連のお話もあるようです。





本書の特徴

主観ですが、特徴だと思った点をあげます。

特徴1: AAP の全体を知れる

AAP と聞いてまっさきに思い浮かべるのは Automation Controller(旧Ansible Tower) かも知れません。

本来、AAP には Automation Hub などほかのプロダクトやサービスも含まれていて、本書では全体的に触れられています。

ページ数としてはやはり、代表的なプロダクトである Automation Controller についてがおそらく一番多いです。

特徴2: CaC (Configuration asCode) による自動化が知れる

Automation Controller や Automation Hub のインストールや設定作業を自動化する方法が紹介されています。

Automation Controller で、というよりAutomation Controller の設定を自動化、ということです。

本書では CaC (Configuration asCode) と表現しています。サンプルは GitHubリポジトリにアップされています。

特徴3: Automation Controller の応用的な使い方も解説

インストールや基本的な設定の他にも、応用的なワークフローの使い方や、他システムとの連携、Automation Mesh によるスケーラビリティについても解説されています。

こんな人に向いているかも?

特徴を踏まえ、以下のような人に向いているかもと思います。

  • AAP の中に Automation Controller(旧Ansible Tower)だけでなく、ほかにどんな物があるか知りたい人
  • Automation Controller や (Private) Automation Hub の設定を自動化したい人
  • AAP は使わないけど、コンテナ化された実行環境について知りたい人

各パート・章の概要

本書は3つのパートに分かれていて、パート内の各章の概要についてご紹介します。

■ Part 1: Getting Ansible Automation Platform Up and Running

AAP の概要や、複数のインストール方法、各種設定についての説明があるパートです。

Chapter 1: Introduction to Ansible Automation Platform

AAP の概要を紹介している章です。

Automation Controller(旧Ansible Tower)だけなく、Execution Environment、Automation Hub や Automation Service Catalog(APA2.2 でオンプレ化)、Red Hat Insights Red Hat Insights for Red Hat AAP、Ansible content tools(ansible-navigator、VS Code の拡張など) にも触れられています。

この章の時点で、AAP は Automation Controller だけじゃないこと、ほかにどんなものがあるかが知れます。

個人的にありがたかったのは、アップストリームとレッドハット公式プロダクトとの違いについて言及されていた点です。たとば、AWX と Automation Controller のような関係のことです。なんとなくは知っていたものの、明記されていて助かりました。

重要なキーワード: CaC (Configuration as Code)

ほか、本書の大きな特徴である CaC (Configuration asCode)についての説明もされています。コード(ここではYAML)による設定の自動化です。 たとえば、Automation Controller は GUI を備えていて、直感的に操作できる一方、他の環境にもう一つ建てるとなると差分に気を使うことになります。コードで管理しておけば、再現性も高く、変更の追跡もしやすくなります。

本書では、いくつかのコレクションを利用した、設定の自動化サンプルが掲載されています。扱っているコレクションは以下の通りです。

  • 基本コレクション(呼び方は私の独断です)
    • awx.awx
    • ansible.tower
    • ansible.controller
  • 派生コレクション(呼び方は私の独断です)
    • redhat_cop.controller_configuration
    • redhat_cop.ah_configuration
    • redhat_cop.ee_utilties

AAP のプロダクトの設定自動化の情報は他では多くない上に、著者らが作成した派生コレクションたちの解説が読めるのはとても有意義だと思いました。

Chapter 2: Installing Ansible Automation Platform

(OpenShiftを利用しない)一般的なインストール方法を紹介する章です。Autmation mesh や High availability な構成にも触れられています。

インストール方法は、公式サイトにも掲載されていますが、本書では CaC、つまりここでは Playbook で自動化する方法が紹介されています。

Chapter 3: Installing Ansible Automation Platform on OpenShift

今度は OpenShift クラスタにインストールする方法の紹介です。

私自身は OpenShift を使ったことがないのですが、OpenShift クラスタに AAP をインストールしたい場合は参考になりそうです。サンプルも掲載されています。

また、最初のほうでは minimuke で AWX する方法も解説されていました。本書のタイトルはあくまで AAP なので、ここまで解説されてるのは意外でした。

Chapter 4: Configuring Settings and Authentication

Automation Controller や、 Automation Hub に対する認証の設定方法の紹介の章です。

SSO による認証の設定と、直接設定する方法が紹介されています。

■ Part 2: Configuring AAP

Part 1 でインストールが終わったので、次は各種設定についてのパートです。

Chapter 5: Configuring the Basics after Installation

インストール後の基本的な設定として、組織、認証情報タイプ、認証情報の設定を紹介する章です。カスタムの認証情報タイプまでていねいに説明されているのが助かります。

ほか、Automation Controller 上の各オブジェクトのインポートとエクスポートについても紹介されています。すでに手動で設定が進んでいる場合でも、この方法でエクスポートしれば、CaC 化がしやすそうですね。

Chapter 6: Configuring Role-Based Access Control

Automation Controller や Automation Hub におけるロールベースアクセス制御(RBAC)の説明と設定方法を紹介する章です。

RBAC 機能を利用すると、たとえば Automation Controllerで、ジョブの実行はできるけど設定変更はできない、といった制御ができるようになります。

少し機能を試すだけであれば、一人でadmin相当の権限ユーザーだけでも良いかも知れませんが、やはり組織で活用するためには権限制御の機能は重要だと思います。

Automation Hub の RBAC 機能はまだ馴染みがなかったので解説があってありがたいです。

Chapter 7: Creating Inventory, and Other Inventory Pieces

Automation Controller でのインベントリの作成について紹介する章です。.

静的なインベントリのほか、AWS、GCE、Azure、VMware vCenter のようなダイナミックインフラストラクチャに基づく動的な、組み込みインベントリプラグインについても触れられています。

個人的によかったのは、組み込みではないインベントリプラグインとして netbox.netbox.nb_inventory の使い方が紹介されている点でした。

それから、まさかのインベントリプラグインを自作するためのPythonコード例まで載っていました。

Chapter 8: Creating Execution Environments

コンテナによる Ansible の実行環境である Execution Environment (EE)の概要、利用、ビルド、Automation Hub への push 方法などについて紹介する章です。

もともとAnsibleを使っていたけど、ここ1-2年の状況を追えていない方にとっては「え、コンテナ?」となって、この章が一番インパクトがあるかもしれません。

ツールとしては ansible-builder が出てきます。ビルドするイメージの定義ファイルである exuection-environment.yml の書き方も紹介されています。

Chapter 9: Automation Hub Management

Automation Hub で コレクションや EE を管理する方法などについて紹介する章です。

機能の紹介だけでなく「Best practices for maintaining execution environments」では、おすすめのEEの管理方法が記載されています。

これまでの venv のほうが気軽といえば気軽でしたが、運用にのってしまえば EE のほうが便利になるかなと思っています。

Chapter 10: Creating Job Templates and Workflows

プロジェクトの作成や、Automation Controller のメイン機能であろうジョブテンプレートとワークフロージョブテンプレートの作成について紹介する章です。

個人的な経験では、各種テンプレートは似て非なるものを作っていくことが多く、この作業を自動化するとラクになりました。画面上のオプションの数も多いですからね。

ジョブスライシングの話もあります。ここで、「スライスの数は大きくしすぎず、実行ノードの数以下にすることが推奨」旨の説明がされていました。チューニングのポイントは迷いどころなので、このようなガイドがあるのはありがたいですね。

本書は、要所要所でこのような実用的な話があるのが助かります。

■ Part 3: Extending Ansible Tower

Ansible Tower、というか Automation Controller のさらに応用的な内容のパートです。

Chapter 11: Creating Advanced Workflows and Jobs

アーティファクトや承認、通知を利用するような高度なワークフローの作成方法を紹介する章です。

あるジョブででの値を後続のジョブで利用するためには set_stats モジュールを利用するのですが、その例が掲載されています。ここでは、set_stats で設定された値は、変数名の頭に _ をつける規則が紹介されています。

通知はメールやSlackについて(特にSlack)扱われています。

Automation Controller を活用していくと、ジョブ間の値の渡しや、ワークフローの一時停止、通知を利用するケースがあるので、本章のような応用的な内容もありがたいです。

Chapter 12: Using CI/CD to Interact with the Automation Controller

Automation Controller や Automation Hub と CI/CD の組み合わせ方を紹介する章です。

CI/CD との組み合わせと一口にいってもいろいろありますが、本章では以下のようなユースケースが取り上げられていました。

  • GitHub Actionsを利用した、設定の維持管理
  • GitLab/GitHub のパイプラインからジョブを実行することを想定したPlaybook、アドホックコマンド実行
  • バックアップ、リストア

「AAPで」CI/CD、ではなく「AAPの」CI/CD、という感じでしょうか。CaC だけでも応用的だとおもっていましたが、更に応用的な内容でした。

Chapter 13: Integration with Other Services

ログやメトリクス系の他サービスと連携する方法を紹介する章です。

具体的には以下のものです。

  • Splunk
  • Automation Analytics for Red Hat AAP
  • Prometheus

Automation Analytics for Red Hat AAP は、AAP に含まれる解析サービスで、SaaS として提供されています。

Chapter 14: Automating at Scale with Automation Mesh

Automation Controller のスケーラビリティと信頼性を向上させる仕組みである Automation mesh を紹介する章です。

Automation mesh は AAP 2.1 で導入された機能で、なかなかに奥が深いです。本章で、どのようなノードの種類があってどういう動きをするのか、どういうユースケースがあるのかが解説されています。

構成次第で様々なパターンがあり得るのでユースケースが載っているのはありがたいです。

Chapter 15: Using Automation Services Catalog

AAP 2.2 でオンプレプロダクトとなった、Automation Services Catalog (ASCと略されてました) について紹介する章です。

正直私自身は一番ピンときていないプロダクトだったのですが、少し理解が進みました。ざっくり、Auotmartion Controller のジョブテンプレートをラップして、カタログとして仕立て上げて、各部門に使ってもらうためのものかなと捉えました。

まだ構築したことないのですが、P268 に

ASC relies solely on a Single Sign-On (SSO) server for authentication.

とあり、構築のハードルが高めのように思いました。


おわりに

Demystifying Ansible Automation Platform」は、AAPの全体を知り、インストールのや設定の自動化まで紹介されている大変有用な書籍でした。

より興味が深いところを、もう一度読んでみようかと思います。