本文へスキップ

Ansibleとは?構成管理の基本を未経験向けにやさしく解説

#Ansible#構成管理#初心者#未経験#インフラ学習

求人票や技術ブログで「Ansible」という言葉を見かけたことはあっても、実際に何をするツールなのか説明できる人は多くありません。結論から言うと、Ansibleとは、複数のサーバーへの設定変更やソフトウェアのインストールを、決めた手順どおりに自動で実行してくれる構成管理ツールのことです。この記事では、構成管理が何を指すのか、Ansibleがどういう仕組みで動いているのか、未経験のうちからどう関わっていくことになるのかを、現場目線で順番に整理します。

1台の管理サーバーから複数のサーバーへ設定を自動配布するAnsibleのイメージ

Ansibleとは何か

Ansibleは、Red Hat社が開発しているオープンソースの構成管理・自動化ツールです。対象のサーバーに特別なソフトウェア(エージェント)を入れる必要がなく、SSHで接続できれば動かせるのが大きな特徴です。すでにSSHでサーバーに入った経験があれば、Ansibleはその操作を手作業ではなく手順書どおりに自動で行わせる仕組みだと捉えると理解しやすくなります。

実行したい内容は「Playbook」と呼ばれるYAML形式の設定ファイルに書きます。パッケージをインストールする、ファイルを配置する、サービスを起動する、といった作業を順番に記述しておけば、対象のサーバーに同じ内容を反映できます。

構成管理とは何をすることか

構成管理とは、複数のサーバーが同じ設定・同じソフトウェア構成になっている状態を、継続して保つための考え方です。サーバーが1台だけなら手作業でも管理できますが、台数が増えるほど「どのサーバーに何を入れたか」を人の記憶や手順書だけで追うのは難しくなります。

項目手作業での設定Ansibleでの設定
作業方法サーバー1台ずつログインして同じ操作を繰り返すPlaybookを1回実行すれば対象サーバー全てに反映
再現性作業者によって手順や順番がずれやすい同じPlaybookなら誰が実行しても同じ結果になる
設定の確認現在の設定を確認するにもログインが必要Playbookの内容を読めば意図した設定が分かる
対象サーバーの増減増えた台数分だけ同じ作業を繰り返すインベントリに追加するだけで対象を増やせる

ここで混同しやすいのがTerraformとの違いです。Terraformはサーバーやネットワークそのものを新しく作る役割を持つツールで、Ansibleはすでに存在しているサーバーの中にソフトウェアを入れたり設定を行ったりする役割を持つツール、という位置づけで語られることが多いです。インフラを作る工程と、作ったインフラの中を整える工程は分かれていると考えると、両者の違いが整理しやすくなります。

Ansibleの仕組み(Playbook・インベントリ・冪等性)

Ansibleがどういう流れで動いているかを、大まかな手順で見ていきます。

インベントリ登録からPlaybook作成、SSH実行までのAnsibleの流れ
  1. インベントリ: 設定を反映したい対象サーバーのIPアドレスやホスト名を、インベントリと呼ばれるファイルに一覧として登録する
  2. Playbook: インストールしたいパッケージや変更したい設定内容を、YAML形式のPlaybookに順番に記述する
  3. 実行: ansible-playbookコマンドを実行すると、インベントリに登録された対象サーバーへSSHで接続し、Playbookの内容を順番に反映する

もう1つ重要な考え方が「冪等性(べきとうせい)」です。同じPlaybookを何度実行しても、サーバーの状態が同じ結果に収まるように作られているのがAnsibleの特徴で、すでに反映済みの設定は変更されず、未反映の部分だけが実行されます。このため、一度動かしたPlaybookをもう一度実行しても壊れる心配をしにくいという安心感があります。

未経験がAnsibleとどう関わるか

未経験から入って、いきなりPlaybookを一から書く役割を任される場面は多くありません。最初は、すでに用意されているPlaybookの内容を読んで何をする設定なのかを把握したり、決まった手順でansible-playbookを実行して結果を確認したりする場面から始まることが多いです。

現役でインフラの現場にいる立場から言うと、Playbookの実行で詰まったときに原因を切り分けられるかどうかが、未経験のうちから評価される分かれ目になりやすいと感じます。実行結果のエラーがSSH接続の失敗なのか、対象サーバー側の権限の問題なのか、Playbookの記述ミスなのかを順番に確認できると、任される作業の幅が広がっていきます。特に対象サーバー側の権限が原因になるケースは多く、Permission deniedの直し方で権限の基本を押さえておくと、エラーの切り分けがしやすくなります。

InfraDojoで学ぶ

InfraDojoなら、ブラウザ上の演習環境でLinuxの操作やSSH接続を手を動かしながら学べるため、Ansibleが裏側で何をしているのかを、Playbookに触れる前にイメージとして固めておけます。何から手をつければいいか迷う場合は、ロードマップで学習の全体像を確認しておくと、Ansibleを学ぶタイミングも判断しやすくなります。

よくある質問

Q. AnsibleとTerraformの違いは何ですか?

Ansibleは主に、すでに存在しているサーバーの中にソフトウェアを入れたり設定を行ったりすることを得意とするツールで、Terraformはサーバーやネットワークそのものを新しく作ることを得意とするツールという位置づけで語られることが多いです。現場では両方を組み合わせて使うケースもあるため、まずはそれぞれの役割の違いを押さえておくと理解が進みます。

Q. Ansibleを学ぶのにプログラミング経験は必要ですか?

AnsibleのPlaybookはYAMLという設定ファイルの記法で書くため、プログラミング言語を使った開発経験は必須ではありません。ただしLinuxのコマンドやSSHの基本的な操作に慣れておくと、Playbookがどのサーバーに何をしているのかを理解しやすくなります。

Q. 未経験でもAnsibleの学習は自宅でできますか?

仮想マシンやクラウドの無料枠を使って複数台のサーバーを用意すれば、自宅の環境でもAnsibleを使った設定の自動化を試せます。壊れても良い環境で何度もPlaybookを実行し、同じ結果になることを確かめながら慣れていくのがおすすめです。

Reo|インフラエンジニアのアイコン

この記事を書いた人: InfraDojo運営者(Reo|インフラエンジニア)

現役インフラエンジニア。SESの現場経験に基づき、未経験からのインフラ転職と学習を支援しています。InfraDojoは、ブラウザ上のターミナルで実際に手を動かして学べるインフラ学習サイトです。

@Reo_engineer_

読むだけで終わらせず、今日から手を動かす

InfraDojoは、ブラウザを開くだけでLinux・ネットワーク・AWSの演習ができる学習サイトです。登録は30秒、最初のコースは無料です。