【初心者向け】Ansibleとは?サーバー構築を自動化する魔法のツールの仕組みを徹底解説
こんにちは。ゆうせいです。
エンジニアとしての第一歩を踏み出したみなさん、毎日黒い画面に向かってコマンドを打ち込んでいませんか?サーバーを1台セットアップするだけなら楽しい作業かもしれません。でも、もし先輩から「明日までに同じ設定のサーバーを100台用意して」と言われたらどうでしょう。
ゾッとしますよね?手作業で100回も同じコマンドを打つなんて、考えただけでも日が暮れてしまいますし、途中で絶対に打ち間違いなどのミスが発生します。
そんな絶望的な状況を救ってくれるのが、今回紹介するAnsible(アンシブル)です。
今日は、世界中のエンジニアに愛されているこの自動化ツールについて、その仕組みから魅力まで、じっくりとお話ししましょう。
Ansibleって一体なに?
Ansibleを一言で表すなら、あなたの代わりにサーバーの設定を行ってくれる「優秀なロボット」です。
正式には構成管理ツールと呼ばれます。Red Hat社が開発を支援しているオープンソースソフトウェアで、誰でも無料で使うことができます。
普段、あなたがサーバー構築をするときは、SSHでサーバーにログインし、コマンドを一つずつ入力しているはずです。Ansibleを使うと、事前に「やりたいことリスト」を書いておくだけで、Ansibleが自動的にサーバーへログインし、そのリスト通りにコマンドを実行してくれます。
Infrastructure as Code(IaC)という考え方
Ansibleを理解する上で、絶対に覚えておいてほしい言葉があります。それがInfrastructure as Code、略してIaC(アイ・エー・シー)です。
インフラのアズのコード。直訳すると「コードとしてのインフラ」ですね。
例えば、家を建てる場面を想像してみてください。
これまでの手作業によるサーバー構築は、職人さんが記憶と経験を頼りに、柱を一本ずつ立てていくようなものでした。これだと、職人さんが変われば家の出来栄えも変わってしまいます。
一方でIaCは、完璧な「設計図(コード)」を用意することに注力します。一度その設計図を書いてしまえば、あとは3Dプリンターのような機械が、設計図通りに何度でも全く同じ家を建ててくれるイメージです。
サーバーの設定内容をコード(文字)として残すことで、誰がいつ実行しても同じ結果が得られるようになります。これがIaCの革命的な点なのです。
Ansibleの3つの重要な要素
Ansibleを使いこなすために、3つの専門用語を覚えましょう。難しくないので安心してください。
1. Inventory(インベントリ)
これは、作業対象のサーバーリストです。「どのサーバーに接続するか」という宛先情報が書かれた住所録のようなものだと考えてください。IPアドレスやホスト名を記述します。
2. Module(モジュール)
これは、Ansibleが使う「道具箱」です。ファイルを作成する道具、ソフトをインストールする道具、サービスを起動する道具など、あらかじめたくさんの機能が部品として用意されています。あなたはこれを選ぶだけで複雑な処理を実行できます。
3. Playbook(プレイブック)
これが最も重要です。Playbookは、Inventoryに書かれたサーバーに対して、どのModuleを使って何をするかを記述した「指示書」あるいは「台本」です。
料理のレシピに例えるとわかりやすいでしょう。
「野菜を切る」「肉を炒める」といった手順が書かれているのがPlaybookです。Ansibleはこのレシピを読み込み、その通りに調理を進めてくれます。
Ansible最大の特徴「エージェントレス」と「冪等性」
Ansibleが他のツールよりも人気がある理由、それはエージェントレスと冪等性(べきとうせい)という2つの特徴にあります。
準備がいらない「エージェントレス」
多くの構成管理ツールは、操作される側のサーバーに「エージェント」と呼ばれる専用のソフトを事前にインストールしておく必要があります。管理対象が100台あれば、100台すべてにインストール作業が必要です。これでは本末転倒ですよね。
しかし、Ansibleは違います。相手のサーバーにSSHで接続さえできれば、特別なソフトを入れる必要がありません。既存の環境にサッと導入できる、この手軽さが初心者に優しいポイントです。
何度やっても大丈夫「冪等性」
冪等性、聞き慣れない言葉ですよね。高校数学で習ったかもしれませんが、これは「ある操作を1回行っても、複数回行っても、結果が変わらない性質」のことです。
日常生活で例えるなら「部屋の電気のスイッチ」が近いです。
スイッチがONの状態で、もう一度「ONにする」操作をしても、電気はついたままですよね?電球が破裂したり、逆に消えたりすることはありません。
AnsibleのPlaybookに「Apache(Webサーバーソフト)をインストールする」と書いたとします。
1回目の実行では、当然インストールされます。
では、間違って2回目を実行したらどうなるでしょう?
通常のシェルスクリプト(コマンドの羅列)だと、既にインストールされているのに上書きしようとしてエラーが出たり、設定ファイルが初期化されたりするかもしれません。
しかしAnsibleは、「もうインストールされているから何もしない」という賢い判断をしてくれます。
安全な状態 現在の状態
確認
このように、Ansibleは必ずゴール地点の状態(あるべき姿)を確認してから動くため、何度実行してもシステムを壊す心配がないのです。
具体的にどんなふうに書くの?
百聞は一見にしかかず。AnsibleのPlaybook(指示書)を少しだけ覗いてみましょう。
AnsibleはYAML(ヤムル)という形式で記述します。人間が読んで直感的に意味がわかるのが特徴です。
- name: Webサーバーのセットアップ
hosts: web_servers
tasks:
- name: nginxをインストールする
yum:
name: nginx
state: present
- name: nginxを起動する
service:
name: nginx
state: started
プログラミング言語のような難しい記号がほとんどないことに気づきましたか?
「hosts(対象)」はWebサーバー。「tasks(やること)」はnginxのインストールと起動。英語が読めれば、何をしているかなんとなくわかりますよね。これがAnsibleの強みです。
メリットとデメリット
どんなに優れたツールにも、得意不得意があります。
メリット
- 学習コストが低い:先ほど見たように、記述がシンプルで読みやすいです。
- 環境を汚さない:エージェントレスなので、サーバーに余計なソフトを入れずに済みます。
- 共有しやすい:コード化されているので、チームメンバーと設定内容を共有したり、レビューしたりするのが簡単です。
デメリット
- 実行速度が少し遅い:SSHで接続して都度確認しながら処理を行うため、大量のサーバーに対して複雑な処理をすると時間がかかります。
- 複雑なロジックは苦手:プログラミング言語ではないので、「もしAならB、そうでなくてCならDを5回繰り返す」といった複雑な条件分岐やループ処理を書くと、可読性が落ちてしまいます。
手作業の時間 Ansibleの準備時間
このバランスを考えたとき、繰り返し作業が発生するなら、間違いなくAnsibleを導入する価値があります。
今後の学習の指針
Ansibleの世界へようこそ!
今日からあなたが目指すべきステップを提案します。
まずは、自分のパソコンの中に仮想マシン(VirtualBoxなど)を2台立ててみてください。1台を操作役(Ansibleサーバー)、もう1台を操作される役(ターゲット)にします。
そして、簡単なPlaybookを書いて、Webサーバーを立ち上げてみましょう。「Hello World」というHTMLファイルが自動で配置され、ブラウザで表示されたときの感動は、エンジニアとしての大きな自信になるはずです。
自動化は、楽をするための技術ではありません。あなたがもっとクリエイティブな仕事に時間を使うための技術です。
さあ、魔法の杖であるPlaybookを書き始めましょう!
【超入門】Ansibleのインストール手順!
今回は、Windowsを使っている方も、Macを使っている方も、迷わずに環境を作れるよう、手順を一つひとつ丁寧に解説していきます。
準備はいいですか?自動化の世界へ飛び込みましょう。
はじめに:Ansibleが動く場所
作業を始める前に、ひとつだけ重要なことをお伝えします。
Ansibleは基本的に、LinuxまたはmacOSの上で動くように作られています。
「えっ、私Windowsなんですけど……」と思ったあなた、大丈夫です。
Windows 10や11には、WSL(Windows Subsystem for Linux)という、Windowsの中でLinuxを動かす素晴らしい機能があります。これを使えば問題ありません。
今回は、以下の2つのパターンで解説します。
- Windowsの方(WSLを使用)
- Macの方(ターミナルを使用)
手順1:黒い画面(ターミナル)を開く
まずは、コマンドを入力するための画面を開きましょう。
Windowsの方
スタートメニューから「Ubuntu」または「WSL」を探して起動してください。もしこれらがまだ入っていない場合は、Microsoft Storeから「Ubuntu」と検索してインストールするのが一番の近道です。
Macの方
「アプリケーション」フォルダの中の「ユーティリティ」にある「ターミナル」というアプリを起動してください。
手順2:Pythonが入っているか確認する
Ansibleは、Python(パイソン)というプログラミング言語で作られています。そのため、あなたのパソコンにPythonが入っていないと動きません。
以下のコマンドをコピーして、画面に貼り付けて実行(エンターキーを押す)してみてください。
python3 --version
画面に「Python 3.x.x」のような数字が表示されればOKです。
もし「command not found」のようなエラーが出た場合は、Pythonをインストールする必要がありますが、最近のMacやWSL版のUbuntuなら最初から入っていることが多いです。
手順3:インストールコマンドを実行する
ここがメインイベントです。
Pythonには「pip(ピップ)」という、便利な道具箱のような機能があります。これを使ってAnsibleをインストールします。
以下のコマンドを入力して、エンターキーを「ッターン!」と押してください。
pip3 install ansible
ズラズラと文字が流れ始めましたか?
これは、Ansible本体と、それが動くために必要な部品をインターネットからダウンロードして、組み立てている様子です。少し時間がかかるので、コーヒーでも一口飲んで待ちましょう。
もし、権限のエラー(Permission deniedなど)が出た場合は、以下のようにコマンドの先頭に「sudo」をつけてみてください。これは「管理者として実行する」という意味です。パスワードを聞かれたら、パソコンのログインパスワードを入力します。
sudo pip3 install ansible
手順4:正しく入ったか確認する
文字の流れが止まって、入力待ちの状態に戻ったら、インストール完了です。
本当に正しくインストールされたか、点呼をとってみましょう。
ansible --version
これを実行して、以下のような表示が出れば大成功です!
ansible [core 2.xx.x]
config file = None
configured module search path = ...
python version = 3.xx.x ...
おめでとうございます!
これであなたのパソコンに、優秀な執事であるAnsibleがやってきました。
メリットとデメリット(インストール編)
このインストール方法(pipを使う方法)についても、良い点と注意点をお話ししておきます。
メリット
- 最新版が使える:pipを使うと、開発元が公開している最新のAnsibleをすぐに手に入れられます。
- OSに関係なく共通:Windows(WSL)でもMacでもLinuxでも、同じコマンドで管理できます。
デメリット
- Python環境の影響を受ける:パソコンに入っているPythonのバージョンが変わると、Ansibleが動かなくなることが稀にあります。
今後の学習の指針
環境構築、お疲れ様でした!
何もなかった黒い画面に、魔法の杖を手に入れましたね。
Ansibleの力 あなたのアイデア
自動化
この式のように、あなたのアイデア次第で可能性は無限大に広がります。
さて、杖を手に入れたら、次は実際に魔法を唱えてみたくありませんか?
次回は、自分のパソコンの中で小さな実験場を作り、実際に「Ping(疎通確認)」という一番簡単な魔法を使って、サーバーと会話をしてみたいと思います。
もし、WSLのセットアップやPythonのインストールでつまずいてしまったら、遠慮なく聞いてくださいね。一緒に解決しましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール
- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。