最近同僚が書いた本の書評をひとつ。
Title: Ansible実践ガイド (Impress top gear)
Publisher: インプレス (Dec. 21, 2016)
Author: 北山 晋吾
ISBN-13: 9784295000464
Amazon: http://amzn.asia/baqt6oa
まず、感想を大きく2点ほど。
- 単なる技術やプロダクトの入門書ではなく、ビジネスや運用を意識した上で、ansible をどう使いこなしてまさに「実践」すればよいのかを教えてくれる本。辞書として使うのは間違いで、読み進めるにしたがって自分で考えながら手を動かす必要がある。
- ぜひ査読させてほしかったw
本書の構成は以下のようになっている。
- 1章 Ansibleの概要
- 2章 Ansibleの基礎
- 3章 プレイブックとインベントリ
- 4章 アプリケーションデプロイメント
- 5章 システムの構成管理
- 6章 ブートストラッピング
- 7章 Infrastructure as Code の実践
最初の3章までが基礎編、4章以下が具体的なテーマに即した実践編である。
内容に入る前にざっくり条件を。
- 対象バージョン: ansible 2.2
- ansible 実行環境: CentOS 7.2
- ansible の install 形態: distro package manager, pip, source install が網羅されている。
- サンプルコード(プレイブック)は以下で公開されている。筆者はまだ試せていないが、基本的に記述の通りに作業すれば問題なく動作する(と、思う)。
以下、各章の紹介に移る。
1章では、Business Agility からはじめて、"クラウド" "DevOps" と話をつなげる中で、構成管理の変遷にともない、なぜ ansible のようなものが必要になったのか、説いている。
クラウド登場以前までの「ITサービスとしての構成管理」は、考え方としては ITIL ・ツールとしてはCMDBで行われてきた。これは、ある意味静的な構成管理であった。一方、クラウド以後に必要性が顕在化してきたのは 「動作しているシステムの(ある意味動的な)構成管理」である。これは、筆者の言葉を借りれば、「システムをあるべき状態に収束させること」とも言える。
この際、Infrastructure as Code といった「しくみ」を適用しようとするだけでなく、「しくみ」自体を組織の実情にあった形で展開するだとか、業務・運用の手順、さらには組織の文化を継続的に改善していくことが重要である。
これがもっとも重要な論点であり、実際本書を通して繰り返し述べられている。
2章と3章が ansible の基本的な解説である。
4章以下が、具体的なシナリオと playbook 例に基づいたansible の実践方法の解説である。
- 4章 アプリケーションデプロイメント
keepalived + HAProxy + Apache2 + MySQL という多層クラスタ構成のWordpressサービスが題材である。単純に初期デプロイを行うだけでなく、台数増減やローリングアップデートのような運用シナリオも含め、具体的な playbook 例に基づいて ansible の使いこなし方が解説されている。
これは、5章以降でも言えることだが、現実的に維持可能な運用のためには、何に気をつけるべきなのか?繰り返し強調される。しかも、どんな組織にでも適用可能な絶対の答はないので、自分で考え続けることが重要である。
- 5章 システムの構成管理
LinuxとWindowsを題材にとり、OSの初期設定 ansible で構成する方法が具体的に解説されている。
筆者には、特に、Windows でここまで自動化が可能になっているのは新鮮だった。
- 6章 ブートストラッピング
6章の題材は、インフラレイヤのリソースプロビジョニングである。
API経由でインフラが操作できるクラウド環境として、Docker と OpenStackを題材に、ansible を用いてクラウド基盤上にインフラリソースを作成する方法が解説されている。
本章のキーワードとしてはダイナミック・インベントリ の考え方だろうか。
なお、ベアメタルへのOSプロビジョニングも、他のツールと組み合わせて ansible で制御はできるのだが、本書では割愛されている。1
- 7章 Infrastructure as Code の実践
最後の7章は、6章までの具体的なシナリオに即した解説にはそぐわない、全体的なベストプラクティスがまとめられている。
前半は「プレイブックのベストプラクティス」で、管理対象の規模に応じたプレイブックの構成方法(特に、柔軟性と可読性・保守性のトレードオフ)と再利用の実例、パフォーマンス・チューニング、トラブルシューティングである。
後半では、ansible そのものから一歩踏み出して、プレイブックのコーディング規約、バージョン管理、(プレイブック自体の)CIがカバーされている。
- そのほか
全体的な感想をもう少し。
個人的には、**「レビュー」**の観点をもう少し入れても良かったのではないかと思う。筆者がかかわっている界隈では github の PR 機能ではなく gerrit を使っているのだが、これも紙面の都合だったのかもしれない。
- まとめ
以上、単純なツールの使い方の解説ではなく、現場でどう使いこなして実践すればよいのか、具体的な例を交えて詳細に解説されている本である。オススメの一冊ではあるのだが、読者にもいろいろ要求する本なので、心して読んでほしい(笑)
- Disclosure
本書の著者は職場の同僚ですが、私は自費で本書を購入しました。
-
昨今は、Composable Infrastructure 等と、物理的なハコもAPI管理できるようになりつつあるが、それはまた別の話。
余談だが、AWSやAzure等のPublic Cloudを例にとってもよかったのではないかと思う。ネット上や類書で情報が豊富にある(だろう)ことと、紙面の問題だろうか。 ↩