変更要約: 初版(主題2.04・副主題2.04.1〜2.04.6に対応)
4.6システム構成ツール(Ansible)
構成管理の自動化がもたらす標準化・効率化・スケール可能性・冪等性という価値と、Ansibleの基本概念(インベントリ・モジュール・Playbook・YAML)、実行コマンドansible・ansible-playbook、代表的な用途(仮想サーバー/コンテナ払い出し・アプリケーションリリース・ネットワーク機器の設定変更)を学びます。
台数が増えるほど、手作業でのサーバー設定は再現性のなさと作業ミスの温床になります。システム構成ツールはこの課題に「あるべき状態」を宣言的に記述し、自動で反映する仕組みを提供し、LinuCの範囲では代表格としてAnsibleが扱われます。
4.6.1自動化がもたらす価値
- 標準化=手順書ではなくコード(Playbook)で構成を定義するため、誰が実行しても同じ結果になる。効率化=繰り返し作業を自動化し人的コストを削減。
- スケール可能性=1台向けの手順を数百台へそのまま適用できる。冪等性=同じPlaybookを何度実行しても、対象が既にあるべき状態なら変更を加えない(結果が収束する)性質。
4.6.2Ansibleの基本概念とコマンド
- インベントリ=管理対象ホストの一覧(グループ化も可能)を記述したファイル。モジュール=ファイル配置・パッケージ導入等、個々の操作単位の実行部品。Playbook=モジュールをタスクとして順に並べた構成の定義書(YAML形式で記述)。
- 実行コマンド=ansible(アドホックに1コマンドだけ実行、例
ansible all -m ping)・ansible-playbook(Playbookファイル全体を実行、例ansible-playbook site.yml)。 - 代表的な用途=仮想サーバー/コンテナの払い出し・アプリケーションのリリース作業・ネットワーク機器の設定状態取得と変更。エージェント不要でSSH等の既存経路を使う点も特徴。
「冪等性=何度実行しても既にあるべき状態なら変更しない」の定義が最頻出です。「1コマンドだけ即時実行=ansible/Playbook全体を実行=ansible-playbook」の対比、PlaybookがYAMLで書かれる点、インベントリ=対象ホスト一覧・モジュール=操作の実行部品・Playbook=タスクの定義書、という用語の階層関係も定番です。
冪等性の実務的な意味は「Playbookを安全に何度でも再実行できる」ことです。たとえばパッケージ導入をstate=presentで記述したタスクは、未導入なら導入し、既に導入済みなら何もしません。これはシェルスクリプトでapt installを毎回無条件に叩くのと対照的で、後者は実行するたびに何かが変わる可能性があるため冪等ではありません。冪等性があるからこそ、定期実行(cron等での定常的な適用)や、途中で失敗したPlaybookの再実行による復旧が安全に行えます。実務のワークフローは、まずインベントリで対象ホスト(例:webサーバー群を [web] グループとして)を定義し、各ホストに適用したい状態をモジュール(package・copy・service等)の組み合わせとしてPlaybook(YAML形式)に記述します。単発の疎通確認や緊急のワンショット操作はansible web -m pingのようにansibleコマンドで済ませ、恒常的な構成の適用はansible-playbook site.ymlのようにansible-playbookで全体を流す、という使い分けが一般的です。用途としては、新規に払い出した仮想サーバー群へ同一の初期設定を一括投入する、アプリケーションの新バージョンを多数のサーバーへ順にリリースする、ネットワーク機器から現在の設定状態を取得し変更を計画的に反映する、といった場面で威力を発揮します。
| 概念 | 役割 | 例 |
|---|---|---|
| インベントリ | 対象ホストの一覧・グループ化 | [web]グループ |
| モジュール | 個々の操作の実行部品 | package・copy・service |
| Playbook | タスクの定義書(YAML) | site.yml |
| ansible-playbook | Playbook全体を実行 | ansible-playbook site.yml |
ひっかけ: 「ansible コマンドは Playbook ファイル全体を実行するためのもの」は誤りです。Playbook全体の実行はansible-playbookの役割で、ansibleコマンドはアドホックな単発コマンド実行用です。また「冪等性とは実行のたびに必ず何らかの変更を加える性質」も誤りで、冪等性は既にあるべき状態なら変更を加えない性質です。
4.6.3この節のまとめ
- 自動化の価値=標準化・効率化・スケール可能性・冪等性(既にあるべき状態なら変更なし)
- インベントリ=対象ホスト/モジュール=操作部品/Playbook=YAMLの定義書。単発は ansible、全体実行は ansible-playbook
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. あるタスクを含む Playbook を、同じ対象ホストに対して誤って2回連続で実行してしまった。Ansible の冪等性という性質を踏まえると、2回目の実行結果はどうなるか?
Q2. 複数台のサーバーに疎通確認だけをその場で1回行いたい。site.yml という Playbook 全体は実行せず、単発のコマンドで済ませたい場合に使うべきものは?
Q3. 新規に払い出した仮想サーバー群に対して、パッケージ導入・設定ファイル配置・サービス起動という一連の初期設定を、対象ホストを増やしても同じ手順で適用できるようにしたい。適切な構成管理の進め方は?

