Ansibleとは?仕組み・基本の用語と使われ方

Ansibleとは?仕組み・基本の用語と使われ方

Ansible(アンシブル)は、サーバーやネットワーク機器の設定や作業を、自動で行うためのツールです。手順書を見ながら1台ずつ行っていた作業を、ファイルに書いておくだけで、何十台にもまとめて実行できます。

ここでは、Ansibleとは何かを、特徴と仕組みから解説します。プレイブックやモジュールなどの基本の用語に加えて、インフラの現場での使われ方と学び方もまとめました。

SUMMARY
この記事で分かること
  • Ansibleとは何か、ほかのツールにない特徴
  • Ansibleの仕組みと、インベントリ・プレイブック・モジュールなどの基本の用語
  • サーバーやネットワーク機器での使われ方と、学び方

Ansibleとは?

設定や作業を自動にするツール

Ansibleは、Red Hatが開発を進めている、オープンソースの構成管理・自動化のツールです。サーバーにソフトを入れる、設定ファイルを書き換える、サービスを再起動する、といった作業を、決まった形のファイルに書いて自動で実行できます。

インフラの構成をコードで管理するIaC(Infrastructure as Code)を実現する、代表的なツールの1つです。

IaCの考え方は、[IaCとは]で解説しています。

Ansibleの主な特徴

特徴内容
エージェントがいらない管理されるサーバーに専用のソフトを入れなくても、SSHでつないで操作できる
YAMLで書ける作業の内容を、読みやすいYAMLの形式で書ける
何度実行しても同じ結果になるすでに設定どおりなら何も変えないため、安心してくり返し実行できる
対応する機器が多いLinux、Windows、ルーターやスイッチ、クラウドまで、幅広く操作できる

とくにエージェントがいらないのは大きな利点です。管理されるサーバーに準備がほとんどいらないため、今動いている環境にも、すぐに取り入れられます。

Terraformとの違い

Ansibleとよく比べられるのが、Terraformです。

項目AnsibleTerraform
得意なことサーバーや機器の「中」の設定と作業クラウドのサーバーやネットワークなど、インフラ「そのもの」を作る
書き方手順を順に書く(手続き型に近い)完成形を書く(宣言型)
主な使い道ソフトの導入、設定の変更、パッチの適用、ネットワーク機器の設定クラウドのリソースの作成と管理

実際の現場では、Terraformでクラウドのサーバーを作り、Ansibleでその中を設定する、という組み合わせもよく使われます。

Ansibleの仕組みと基本の用語

Ansibleの構成

Ansibleは、次の2つの役割のマシンで動きます。

役割内容
コントロールノードAnsibleを入れて、命令を出すマシン。LinuxやmacOSで動かす
管理対象ノード操作されるサーバーや機器。Linuxなら、SSHでつながってPythonが動けばよい

コントロールノードから、管理対象ノードへSSHでつないで、作業を順に実行します。Windowsのサーバーは、WinRMなどの仕組みで操作します。ルーターやスイッチは、SSHや機器のAPIを使って操作します。

基本の用語

用語意味
インベントリ操作するサーバーや機器の一覧。グループに分けて書ける
プレイブック「どのサーバーに、どんな作業をするか」を書いたYAMLのファイル
タスクプレイブックの中の、1つ1つの作業
モジュール「パッケージを入れる」「ファイルをコピーする」など、作業ごとに用意された部品
ロール関連するタスクや設定をまとめて、使い回せるようにしたもの
コレクションモジュールやロールを、メーカーや用途ごとにまとめた配布の単位

最初は、インベントリ・プレイブック・モジュールの3つを押さえれば、Ansibleの基本の動きを理解できます。

プレイブックの例

次は、Webサーバーのグループに、nginxを入れて起動するプレイブックの例です。

– name: Webサーバーを準備する
hosts: web
become: true
tasks:
– name: nginxを入れる
ansible.builtin.package:
name: nginx
state: present

– name: nginxを起動して、自動起動を有効にする
ansible.builtin.service:
name: nginx
state: started
enabled: true

「nginxが入っている状態(present)」「起動している状態(started)」のように、どうなっていてほしいかを書くのがポイントです。すでにその状態なら、Ansibleは何も変えません。

よく使うコマンド

コマンドできること
ansible-playbook プレイブック名プレイブックを実行する
ansible-playbook プレイブック名 –check実際には変えずに、何が変わるかだけを確かめる
ansible グループ名 -m ping管理対象ノードに、つながるかどうかを確かめる
ansible-inventory –listインベントリの内容を表示する

本番の環境では、先に –check で変わる内容を確かめてから実行すると安心です。作業の前に影響を確かめる考え方は、手作業のときと同じです。

現場での使われ方と学び方

Ansibleが使われる場面

場面使われ方
サーバーの初期設定ユーザーの作成、パッケージの導入、セキュリティの設定をまとめて行う
パッチの適用何十台のサーバーに、同じ手順でアップデートを当てる
設定の確認設定が決まりどおりになっているかを、まとめて確かめる
ネットワーク機器の設定ルーターやスイッチのVLANやACLの設定を、まとめて変える
定型作業の自動化ログの回収や、サービスの再起動などのくり返しの作業を自動にする

運用の現場では、手順書どおりに何度もくり返している作業から自動にしていくのが効果的です。

ネットワークの自動化にも使われる

Ansibleは、Cisco、Juniper、Aristaなど、多くのメーカーのネットワーク機器に対応しています。たとえば、Ciscoの機器向けのコレクションを使えば、何十台のスイッチに同じVLANの設定をまとめて入れることができます。

2027年2月に始まるCCNAの新しい版でも、Ansibleによる構成管理が出題範囲に入るとされています。

詳しくは、[CCNA v2.0とは]で紹介しています。

企業向けのAnsible Automation Platform

Ansibleそのものは無料で使えます。企業で大規模に使う場合は、Red Hatが提供するAnsible Automation Platformという有料の製品もあります。画面からの実行や、権限の管理、実行の記録など、チームで使うための機能がそろっています。

Ansibleの学び方

ステップやること
1. Linuxの基本を押さえるSSHでの接続や、基本のコマンドに慣れておく
2. 練習の環境を作る仮想マシンを2〜3台作り、1台をコントロールノードにする
3. ping で確かめるインベントリを書き、ansible -m ping でつながることを確かめる
4. プレイブックを書く今の仕事でくり返している作業を1つ選び、プレイブックにしてみる
5. ロールで整理する作ったプレイブックを、使い回せるロールにまとめる

仮想マシンの作り方は[Linuxのインストール方法]で、Linuxの基本のコマンドは[Linuxのコマンドとは]で紹介しています。Ansibleの力を証明したい人には、Red Hatの資格「RHCE(Red Hat認定エンジニア)」があり、Ansibleによる自動化が試験の中心になっています。

Ansibleでよくある疑問

プログラミングができなくても使える?

使えます。プレイブックはYAMLで書くため、プログラミングの言語を知らなくても、手順を順に書いていけば動かせます。条件分岐や繰り返しの書き方もありますが、必要になったときに少しずつ覚えれば十分です。

シェルスクリプトとは何が違う?

シェルスクリプトは、コマンドを順に実行するものです。Ansibleは、今の状態を確かめて、必要なときだけ変えるため、何度実行しても同じ結果になります。また、たくさんのサーバーへの実行や、エラーのときの扱いもまとめて管理できます。

シェルスクリプトについては、[シェルスクリプトとは]で紹介しています。

Windowsのサーバーでも使える?

使えます。管理対象ノードとしてWindowsのサーバーを操作できます。ただし、Ansibleを動かすコントロールノードは、LinuxかmacOSで用意します。Windowsのパソコンで動かしたい場合は、WSL(Windows上でLinuxを動かす仕組み)を使うのが一般的です。

TerraformとAnsible、どちらを先に学べばいい?

サーバーや機器の運用に関わっているなら、Ansibleからがおすすめです。今の仕事の作業をそのまま自動にでき、効果を実感しやすいためです。クラウドのインフラを作る仕事が中心なら、Terraformから始めましょう。

Ansibleは無料で使える?

使えます。Ansibleそのものはオープンソースで、無料で使えます。企業向けの機能が必要な場合は、有料のAnsible Automation Platformを検討します。

まとめ

Ansibleは、サーバーやネットワーク機器の設定や作業を、ファイルに書いて自動で行うためのツールです。この記事のポイントは次のとおりです。

  • Ansibleとは
    Red Hatが開発を進める、オープンソースの構成管理・自動化のツール。
  • 主な特徴
    エージェントがいらず、YAMLで書け、何度実行しても同じ結果になる
  • 基本の用語
    インベントリに対象を書き、プレイブックに作業を書き、モジュールで1つずつ実行する。
  • 現場での使われ方
    サーバーの初期設定やパッチの適用、ネットワーク機器の設定などの、くり返しの作業を自動にする。
  • 学び方
    仮想マシンで練習の環境を作り、今の仕事の作業を1つプレイブックにしてみる。

Ansibleは、インフラエンジニアの経験をそのまま活かして、自動化の力を身につけられるツールです。まずは仮想マシンで練習の環境を作り、ping でつながるところから始めてみましょう。

記事の企画・執筆

IT基盤(インフラ)エンジニアのための求人・情報サイト「テックドック」の編集部です。ネットワーク・サーバー・クラウド・セキュリティなど、IT基盤の仕事・技術・資格・キャリアに役立つ情報を、実務に即した視点で発信しています。