【あんしぶる】

Ansible(アンシブル) とは?

💡 サーバーの設定作業を自動でやってくれる「構成管理の司令塔」
📌 このページのポイント
Ansible — サーバー構成管理の自動化 管理マシン Playbook (YAML) Inventory(対象一覧) SSH SSH SSH Web サーバー 1 nginx インストール済 ✓ Web サーバー 2 nginx インストール済 ✓ DB サーバー PostgreSQL 設定済 ✓ Ansible の特徴 エージェント不要 SSH だけで接続 YAML で記述 宣言的で読みやすい 冪等性 何度実行しても同じ結果
Ansibleのイメージ
ひよこ ひよこ

Ansibleって何がうれしいの?手動でサーバー設定すればいいじゃん。

ペンギン先生 ペンギン先生

サーバーが2〜3台なら手動でもいいけど、50台に同じ設定を入れるとなったら大変でしょ。しかも手動だと「Aさんがやると設定漏れがあるけどBさんがやると大丈夫」みたいな属人化が起きる。Ansibleなら手順をコード化するから、誰がやっても同じ結果になるんだよ。

ひよこ ひよこ

ChefやPuppetと何が違うの?

ペンギン先生 ペンギン先生

ChefやPuppetは対象サーバーにエージェント(常駐プログラム)をインストールする必要があるけど、AnsibleはSSHで接続するだけだから導入が簡単。あとPlaybookがYAMLで書かれているので、プログラミング言語を知らなくても読みやすいというメリットがあるよ。

ひよこ ひよこ

冪等性って何?

ペンギン先生 ペンギン先生

同じPlaybookを何回実行しても結果が変わらないということ。例えば「nginxをインストールする」というタスクは、すでにインストールされていればスキップされる。シェルスクリプトだと「すでに入っているかチェックして…」と自分で書かないといけないけど、Ansibleは最初からそう設計されているんだ。

ひよこ ひよこ

AnsibleとTerraformってどう使い分けるの?

ペンギン先生 ペンギン先生

ここは実務で混乱しやすいポイントでね。一般的にはTerraformが「インフラの作成」(EC2インスタンスVPCを作る)、Ansibleが「インフラの構成」(作ったサーバーにソフトをインストールして設定する)という役割分担なんだけど、実際にはどちらも相手の領域に踏み込める。AnsibleでもEC2を作れるしTerraformでもプロビジョニングができる。さらにコンテナが主流になると「サーバーの中の設定」をDockerfileで管理するから、Ansibleの出番が減ってきている。「全部Ansibleで」も「全部Terraformで」もアンチパターンで、チームのスキルセットと既存資産を見て「何を何で管理するか」の線引きを明確にするのが一番大事なんだよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Ansible」って出てきたら「YAMLで書いた手順でサーバーの設定を自動化するツールのことだな」と思えればだいたいOK!
📖 おまけ:英語の意味
「Ansible」 = (SF用語)超光速通信装置
💬 SFで使われる即座に通信できる架空の装置。対象サーバーとすぐに通信して設定できるイメージからこの名前になったよ
← 用語集にもどる