書籍名「Ansible 構築・運用ガイドブック」
マイナビ出版社
著者:八木澤健人
読もうと思った動機
Terraformの学習書籍を読んでいる中でAnsibleへの言及があり、構成管理ツールとしての概要を把握したいと考えたのがきっかけです。
また、『レガシーシステム改善ガイド』においても、環境構築の改善策としてAnsibleの活用が推奨されていたため、具体的な導入メリットや使用感を学びたいと思い本書を手に取りました。
印象に残った部分
p2 従来のITインフラが抱える問題
スタティックなITインフラの時代(オンプレ)の問題点
・ヒューマンエラー
誰しも作業ミスをしてしまった経験があるでしょう。
手作業を前提したシステム運用は、多くの問題を引き起こします。なぜなら、人間は必ずどこかミスをする可能性が存在するからです。
・レガシーサーバの存在
古くから存在しているシステムの運用は、管理者にとってもっとも頭を悩ませる問題かも知れません。遙か昔から稼働しているサーバーの構成がキチンとされている方が稀で、多くはドキュメントは実機の設定内容と乖離しており、ドキュメントが存在すらしないということもあります。
ダイナミックなITインフラ運用の問題点(仮想環境、クラウド)
・ダイナミックにに増減する管理対象
膨大なインスタンスの中で、どのインスタンスが存在し、何に対して作業を実施する必要があるのかを管理者に正確に把握しなければなりません。ゲームプラットフォーム(大規模なサービスでは、1万を超えるインスタンスが存在するケースがあります)
スクリプトによる自動化
べきとう性が担保されない
「べきとう性」とは「ある操作を何度実行しても同じ結果となる性質」を意味しています。
スクリプト側で意識させない限りべきとう性は担保されません。
p7 Infrastructure As Code
IasCodeを単純に「自動化すること」を誤解してしまうことがありますが、そうではありません。IasCodeの本質は「インフラコードで定義する」ことにあります。そしてコードで定義したインフラを現実世界に反映させるために「構成管理ツールによる自動化」が存在しています。自動化はIasCの考え方においては、それを実現するための手段ではありますが、目的ではありません。単に自動化したからといってIasCを実践している とはいえないのです。
p8 CIとCDを実現するツール
CIとは、端的に説明すると「より頻繁にコードの変更をリポジトリに適用し、自動的にコードをビルド、テストする」仕組みです。つまりコードに対して変更が発生するたびに、自動的にVMやコンテナを生成し、その上でコードを実行して、事前に設定したテストを通過するかを機械的に確認します。
CDは、CIの考え方は拡張したもので、CIの「コードの変更、ビルド、テスト」までを自動で適用するモノだったに対して、CDは「コードの変更、ビルド、テスト、ステージング環境へのデプロイ」までを自動的に適用する仕組みです。
p10 自動構成管理ツール
Ansibleは「自動構成管理ツール」の1つです。コードとして定義された「Playbook」を実際にインフラに適用する役割を担います。IasCでは手作業ではITインフラを構築していくことはせず、Ansibleのような自動構成管理ツールを使って実際の変更をシステムに適用します。
p11-13 Ansibleを導入するメリット
・エージェントレス
・YAMLによる学習コストの低いplaybook
・多種多様な環境に対応
AnsibleはLinuxxサーバの管理サーバの管理だけでは CiscoやJuniperを始めとする。
ネットワーク機器、Windowsまでも管理することが可能です。つまり環境の違いを意識することなく、統一された手法でインフラに対する変更仕様を自動化できるわけです。
p19 プレイブック
プレイブックは、Ansibleにおける「ターゲットに対するオペレーションの設計書兼手順書」です。
p36 モジュール
Ansibleが多様な環境の自動化が可能なのは、数多くのモジュールが存在しているためです。Ansibleで自動化する際に何ができるか、使用できるモジュールに依存します。
モジュールカテゴリー
Cloud modules
Database module
Windows module
p211 自動化の目的
自動化によって得られるメリットで、少数のサーバーが存在する環境よりも、サーバーの台数が多くなればなるほど、多く享受できます。そのため、まず現在の業務にどのように問題があるのかを洗い出す必要があります。
・運用タスクの洗い出し
次に「どれを自動化、どれを自動化しないか」を決定します。たとえば、Windows Updateの適用については、細かなコントロールや一斉にWindows Updateが実行されることによるネットワーク負荷を低減させたいのであれば、WSUSサーバを導入して、結合管理すると言ったアプローチもあるでしょう。このように「必ずしもAnsibleで自動化しなくても良いタスク」を存在します。
実践できること or 感想
感想
書籍の構成について
単なるAnsibleの操作マニュアルにとどまらず、「現状のインフラが抱える課題」や「なぜAnsibleが有効なのか」といった背景、さらには導入時の「自動化対象の判断基準」まで触れられていた点が非常に高評価でした。ツールを使う手前の"設計思想"や"運用の考え方"まで学べたのは大きな収穫です。
ツールとしての将来性
Ansibleは単なる流行りのツールではなく、実績を積み重ねて「枯れた(信頼性の高い)」技術になりつつあると感じました。今後数年にわたってインフラ運用の標準的な選択肢として使われ続けるポテンシャルを感じます。
習得する価値
インフラエンジニアに限らず、開発者(ソフトウェア担当者)や非インフラ担当者にとっても習得価値が高いと感じました。
情シス担当: 社内インフラの構築・管理の効率化。
開発担当: 検証環境の迅速な構築・破棄(Scrap & Build)。
このように、立場の違いを超えて共通言語として使える強力なツールだと思います。
実践できること
ハンズオンの実践: 本書の第4章・5章・6章を参考に、実際に手を動かして環境構築を行う。
自動化の適用範囲検討: 自身の業務において「定型化されている作業」や「手順書が複雑化している作業」をリストアップし、Ansibleで解決できるか検討してみる。
・github copilotに現状動いているオンプレ環境情報を取得させて、その情報をplaybookに反映させる。
playbookをエクセルに反映させる。トラブったときにplaybookを実行してすぐに復旧させる