Ansibleの活用方法を学ぶ|コードによるインフラ構築の自動化 Ansible実践ガイド|感想
この本を読んだ理由/知りたかったこと
Ansibleとは、現在はレッドハット社が提供しているオープンソースの構成管理ツールです。私は業務上でAnsibleを活用した自動化を推進する立場であり、実際のAnsibleで利用するコード類の記載方法やサンプルを確認することを目的として、この本を手に取りました。
どのような内容が書かれているのか?
構成管理ツールが必要となる背景および、それを踏まえたAnsibleの特徴や他の構成管理ツールとの比較
Ansibleのアーキテクチャーや簡単な文法の説明
特定ユースケースにおける実際のコード
実際にAnsibleを活用する際の技術的なTIPS類
レッドハットが提唱する自動化2.0という概念の説明
感想/学び
全般的にAnsibleの初学者にとってはかなりの良書と感じました。
Puppet・Chefという他の代表的な構成管理ツールとの比較もあり、Ansibleのデメリットにも触れられておりますので、概要や立ち位置を掴みやすいです。
実際にコードが書かれたサンプルの内容も、実際に普段業務で見るような一般的なシステム構成であり、簡単すぎず難しすぎず丁度よいレベルと感じました。
後半あるインベントリやプレイブックの分割管理に関する内容も、実業務では絶対に必要になる部分ですので、簡単な設計指針が示されているのは良いポイント。
自動化2.0やセルフサービス化の概念について最後に記載があります。私は業務上で何度も聞いているので新鮮さはないものの、自動化で成果を上げるためには必須の考え方なので、初学者向けとしてはとても良いと思います。
その他、私が普段の業務を踏まえ、この本を読んで感じたことは以下の通りです。
「運用時に発生する障害のほとんどが単純な作業ミスであり、どのような対策を施しても人が介在する以上、完全に作業ミスを防ぐことは困難です」
私が金融機関のシステムを扱っているからかもしれませんが、肌感は少し異なります。大半は要件や設計、テストの考慮漏れが原因であり、ダブルチェックを必須化してれば単純な作業ミスは少ない印象があります。
作業を自動化をしたとしても考慮漏れは防ぐことは難しいため、Ansible活用のメリットとして品質向上につながるかは疑問です。
「実行結果が意図した状態になっているかどうかの判断は、実行者自身で確認する必要があります。これはAnsibleの処理が失敗したときに、ロールバックを行うかどうかの判断さえも、実行者が管理しなければいけないということを意味します」
運用作業にAnsibleを組み込む場合、まず現実的なハードルになるのはこの部分です。インフラ作業を実施した後のリグレッションテストは必須ですが、
「万が一」のトラブルも許されない金融機関の重要システムにおいては、結局人が立ち会うことになり、自動化の効果が薄れていくことになります。
そのため実作業日における効率化だけでなく、自動化2.0の考え方のもと、事前準備や部署間のコミュニケーションにメスを入れる必要があると日々感じております。そのためのツールとしてはAnsibleはとても適していると考えます。
「Ansibleの導入自体が、自動化の推進ではありません。いかにシンプルにオペレーションを高度化し、メンバが共通の認識で作業を行えるのかといったノウハウこそが、自動化推進の第一歩なのです」
当たり前のことですが、これが何よりも難しい。通常業務で手いっぱいの運用部門に協力を取り付け、彼らのモチベーションを維持しながら自動化を推進するハードルの高さを痛感しております。性悪説で考えると「自動化によって楽になっても、結局それで人が減らされたり追加業務が割り当てられたり忙しいのは変わらない。それならやりたくない」という思考になるのは当然であり、やはり上層部の強いコミットメントが必要となります。
著者
レッドハット社やその他SIerのエンジニア5名の共著です。
まとめ
今回は「コードによるインフラ構築の自動化 Ansible実践ガイド」の書評を紹介させてもらいました。
概要からアーキテクチャー、サンプルコードなど初学者に必要な内容が網羅的に記載されているため、かなり良い本と感じました。ただ重厚長大なシステムを多く抱える企業にとって、実際に自動化を推進するのはAnsibleを構築することの100倍大変なのでゴールは遠いですね。
ご興味がある方は読んでみて頂ければと思います。