Ansible入門2026 初心者向けにわかりやすく解説!

ITインフラ
この記事は約24分で読めます。

この記事の最終更新日: 2026年6月17日

サーバーの設定作業を毎回手作業でやっていると、だんだんつらくなってきます。

たとえば、次のような作業です。

Nginxをインストールする
設定ファイルを配置する
サービスを再起動する
ユーザーを作成する
パッケージを更新する
複数台のサーバーに同じ設定を入れる

1台だけなら手作業でもなんとかなります。

しかし、サーバーが3台、5台、10台と増えてくると、手作業ではミスが増えます。

「このサーバーだけ設定を忘れていた」
「本番と検証環境で設定が微妙に違う」
「前に何を実行したか覚えていない」

こうした問題を減らすために使われるのが Ansible です。

この記事では、Ansibleとは何か、何が便利なのか、初心者はどこから学べばよいのかを、2026年時点の情報を踏まえてわかりやすく解説します。


Ansibleとは?

Ansible は、サーバー構築や設定変更を自動化するためのツールです。

公式ドキュメントでは、Ansibleはリモートシステムの管理を自動化し、その望ましい状態を制御するものとして説明されています。Ansibleの基本構成には、Ansibleを実行する Control node、管理対象をまとめる Inventory、操作対象となる Managed node があります。(Ansible Documentation)

簡単に言うと、Ansibleは次のようなツールです。

「このサーバーにはNginxを入れて」
「この設定ファイルを配置して」
「サービスを起動して」
「このユーザーを作って」

という作業を、コードで定義して自動実行するツール

Ansibleを使うと、サーバーに対して手作業でコマンドを打つ代わりに、YAMLで書いた設定ファイルをもとに作業を実行できます。


Ansibleでできること

Ansibleでは、さまざまなIT作業を自動化できます。

代表的には次のようなものです。

  • サーバーの初期設定
  • パッケージのインストール
  • 設定ファイルの配置
  • サービスの起動・再起動
  • ユーザー作成
  • ディレクトリ作成
  • アプリケーションのデプロイ
  • ミドルウェア設定
  • 複数サーバーへの一括作業
  • ネットワーク機器の設定
  • クラウド環境の操作

Red Hatの解説でも、Ansibleはプロビジョニング、構成管理、アプリケーションのデプロイ、オーケストレーションなどのITプロセスを自動化するツールとして説明されています。(Red Hat)

つまりAnsibleは、単なる「サーバー設定ツール」ではありません。

サーバー運用、インフラ構築、アプリ配布、定型作業の自動化まで幅広く使える自動化ツールです。


Ansibleが便利な理由

Ansibleが便利な理由は、主に次の3つです。

手作業を減らせる
同じ作業を何度も再現できる
設定内容をコードとして残せる

特に大きいのは、作業手順をコードとして管理できることです。

たとえば、手順書にこう書いてあるとします。

1. apt updateを実行する
2. nginxをインストールする
3. 設定ファイルを配置する
4. nginxを再起動する

この手順書を見ながら毎回作業するのは大変です。

Ansibleでは、この作業をPlaybookとして書けます。

- name: Setup web server
  hosts: web
  become: true
  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present

    - name: Start nginx
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

このように書いておけば、同じ作業を何度でも実行できます。

手順書ではなく、実際に動くコードとして残せるのがAnsibleの強みです。


Ansibleの基本構成

Ansibleを理解するには、まず次の用語を押さえる必要があります。

用語意味
Control nodeAnsibleを実行するマシン
Managed nodeAnsibleで操作されるサーバー
Inventory操作対象のサーバー一覧
Playbook実行したい作業をYAMLで書いたファイル
Task実行する1つ1つの作業
Module実際の操作を行う部品
RolePlaybookを再利用しやすく整理する仕組み
CollectionModuleやRoleなどをまとめて配布する単位

公式ドキュメントでも、Control nodeは ansibleansible-playbook などのCLIを実行するマシン、Managed nodeはAnsibleで管理される対象ホスト、Inventoryは管理対象ノードを論理的にまとめたリストとして説明されています。(Ansible Documentation)

初心者は、まず次の3つだけ覚えれば十分です。

Control node:Ansibleを実行する側
Managed node:操作される側のサーバー
Inventory:操作対象サーバーの一覧


Ansibleはエージェントレス

Ansibleの特徴の1つは、基本的に 管理対象サーバーに専用エージェントを入れなくてよい ことです。

公式ドキュメントでは、Managed nodeには通常Ansibleをインストールしないと説明されています。AnsibleはControl nodeから実行され、管理対象ホストに対して操作します。(Ansible Documentation)

これは初心者にとって大きなメリットです。

たとえば、複数台のLinuxサーバーを管理するときに、それぞれのサーバーへAnsible専用の常駐エージェントを入れる必要がありません。

多くの場合、SSHで接続できる状態を用意すれば、Ansibleから操作できます。

自分のPC・管理サーバー
  ↓ SSH
対象サーバー1
対象サーバー2
対象サーバー3

このシンプルさが、Ansibleの使いやすさにつながっています。


Ansibleのインストール方法

2026年時点の公式ドキュメントでは、Ansibleのインストール方法として pipxpip を使う方法が案内されています。pipx ではフルパッケージの ansible を入れる方法と、最小構成の ansible-core を入れる方法が示されています。(Ansible Documentation)

たとえば、pipx を使う場合は次のようにインストールできます。

pipx install --include-deps ansible

最小構成の ansible-core を入れる場合は次です。

pipx install ansible-core

pip を使う場合は、次のような形です。

python3 -m pip install --user ansible

インストール後は、バージョンを確認します。

ansible --version

初心者は、まずローカル環境や検証用VMで試すのがおすすめです。

いきなり本番サーバーに対して実行するのは避けましょう。


ansible と ansible-core の違い

Ansibleを調べていると、ansibleansible-core という名前が出てきます。

初心者にとっては少しわかりにくいですが、ざっくり言うと次のような違いです。

名前内容
ansible-coreAnsibleの中核機能
ansibleansible-coreに加えて、多くのCollectionを含むパッケージ

公式インストールガイドでも、フルパッケージの ansible と、最小パッケージの ansible-core は別々にインストール例が示されています。(Ansible Documentation)

初心者が学習目的で使うなら、まずは ansible パッケージを使う方がわかりやすいです。

ただし、実務ではプロジェクトごとに必要なCollectionを明示的に管理することもあります。


Inventoryとは?

Inventory は、Ansibleで操作する対象サーバーの一覧です。

公式ドキュメントでは、InventoryはManaged nodeを整理するための中央ファイルであり、Ansibleにシステム情報やネットワーク上の位置を伝えるものとして説明されています。Inventoryを使うことで、Ansibleは多数のホストを1つのコマンドで管理できます。(Ansible Documentation)

たとえば、次のような inventory.ini を作ります。

[web]
web01 ansible_host=192.168.10.11
web02 ansible_host=192.168.10.12

[db]

db01 ansible_host=192.168.10.21

この例では、web グループに2台、db グループに1台のサーバーがあります。

Ansibleでは、このグループ名を指定して処理を実行できます。

ansible web -i inventory.ini -m ping

これは、web グループのサーバーに対して接続確認を行う例です。


Playbookとは?

Playbook は、Ansibleで実行したい作業をYAML形式で書いたファイルです。

公式ドキュメントでは、PlaybookはManaged nodeをデプロイ・構成するために使うYAML形式の自動化設計図として説明されています。また、Playbookは複数のPlayを持ち、PlayはInventory内のManaged nodeに対して順序付きのTaskを実行します。(Ansible Documentation)

たとえば、NginxをインストールするPlaybookは次のように書けます。

- name: Install nginx
  hosts: web
  become: true

  tasks:
    - name: Install nginx package
      ansible.builtin.apt:
        name: nginx
        state: present

    - name: Ensure nginx is running
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

実行するには、次のコマンドを使います。

ansible-playbook -i inventory.ini nginx.yml

このように、Ansibleでは「何をどうしたいか」をPlaybookに書き、それを ansible-playbook コマンドで実行します。


Taskとは?

Task は、Playbook内で実行される1つ1つの作業です。

たとえば、次の2つはそれぞれTaskです。

- name: Install nginx package
  ansible.builtin.apt:
    name: nginx
    state: present

- name: Ensure nginx is running
  ansible.builtin.service:
    name: nginx
    state: started
    enabled: true

1つ目のTaskでは、Nginxパッケージをインストールしています。

2つ目のTaskでは、Nginxサービスを起動し、自動起動も有効にしています。

初心者は、Playbookを「作業手順書」、Taskを「手順書の1項目」と考えると理解しやすいです。


Moduleとは?

Module は、Ansibleが実際に処理を行うための部品です。

たとえば、次のようなModuleがあります。

Module用途
ansible.builtin.aptDebian/Ubuntu系でパッケージ管理
ansible.builtin.yumRHEL/CentOS系でパッケージ管理
ansible.builtin.copyファイルをコピー
ansible.builtin.templateテンプレートから設定ファイル生成
ansible.builtin.serviceサービス管理
ansible.builtin.userユーザー管理
ansible.builtin.fileファイル・ディレクトリ管理

Ansibleでは、シェルコマンドを直接書くこともできますが、基本的にはModuleを使う方がよいです。

悪い例です。

- name: Install nginx using shell
  ansible.builtin.shell: apt install -y nginx

良い例です。

- name: Install nginx using apt module
  ansible.builtin.apt:
    name: nginx
    state: present

Moduleを使うと、冪等性を保ちやすくなります。


冪等性とは?

Ansibleを学ぶうえで重要なのが 冪等性 です。

冪等性とは、簡単に言うと、同じ処理を何度実行しても結果が変わらない性質です。

たとえば、Nginxをインストールする処理を考えます。

1回目に実行すると、Nginxがインストールされます。

2回目に実行したとき、すでにNginxが入っていれば、Ansibleは「変更不要」と判断できます。

1回目:Nginxが入っていない → インストールする
2回目:Nginxはすでに入っている → 何もしない

これが冪等性です。

Ansibleでは、Moduleを適切に使うことで、同じPlaybookを何度実行しても安全な構成にしやすくなります。

これは手作業のシェルスクリプトと比べたときの大きなメリットです。


Ad-hocコマンドとは?

Ansibleには、Playbookを書かずに単発コマンドを実行する方法もあります。

これを Ad-hocコマンド と呼びます。

たとえば、接続確認です。

ansible all -i inventory.ini -m ping

すべての対象サーバーでディスク容量を確認する例です。

ansible all -i inventory.ini -a "df -h"

特定グループに対してuptimeを確認する例です。

ansible web -i inventory.ini -a "uptime"

Ad-hocコマンドは、一時的な確認や簡単な作業には便利です。

ただし、繰り返し使う作業はPlaybookにした方がよいです。

一度だけ確認したい → Ad-hocコマンド
何度も使う作業 → Playbook

このように使い分けるとよいです。


Roleとは?

Ansibleを使い始めたばかりのころは、1つのPlaybookにすべてのTaskを書いても問題ありません。

しかし、作業が増えてくると、Playbookが長くなりすぎます。

そこで使うのが Role です。

Roleを使うと、Nginx設定、MySQL設定、アプリデプロイなどを部品化できます。

たとえば、次のような構成になります。

roles/
  nginx/
    tasks/
      main.yml
    templates/
      nginx.conf.j2
    handlers/
      main.yml

Roleを使うと、Playbook側はシンプルになります。

- name: Setup web servers
  hosts: web
  become: true
  roles:
    - nginx

Roleは、Ansibleを実務で使ううえで重要な整理方法です。

ただし、初心者はいきなりRoleから始めるより、まずは普通のPlaybookを書けるようになってから学ぶ方が理解しやすいです。


Collectionとは?

Collection は、AnsibleのModule、Role、Pluginなどをまとめて配布する単位です。

公式ドキュメントでは、Collectionは ansible-galaxy collection install コマンドでインストールでき、デフォルトではGalaxyサーバーからCollectionを取得すると説明されています。(Ansible Documentation)

たとえば、Collectionをインストールするには次のようにします。

ansible-galaxy collection install community.general

Collectionを使うと、標準のAnsibleだけでは足りない機能を追加できます。

ただし、実務ではCollectionのバージョン管理も重要です。

チーム開発では、requirements.yml に必要なCollectionを書くことがあります。

collections:
  - name: community.general
    version: ">=9.0.0"

そして、次のようにインストールします。

ansible-galaxy collection install -r requirements.yml

初心者のうちは「Ansibleの拡張パッケージのようなもの」と理解しておけば十分です。


Ansibleの基本的な流れ

Ansibleを使った作業の基本的な流れは、次の通りです。

1. 対象サーバーを用意する
2. SSH接続できるようにする
3. Inventoryを書く
4. Playbookを書く
5. ansible-playbookで実行する
6. 結果を確認する
7. 必要に応じて修正する

最初は、いきなり複雑な構成を作る必要はありません。

まずは1台の検証サーバーに対して、簡単なPlaybookを実行するのがおすすめです。


最初に作るサンプル構成

初心者向けの最小構成は、次のようなものです。

ansible-sample/
  inventory.ini
  nginx.yml

inventory.ini です。

[web]
web01 ansible_host=192.168.10.11 ansible_user=ubuntu

nginx.yml です。

- name: Setup nginx
  hosts: web
  become: true

  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present
        update_cache: true

    - name: Start and enable nginx
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

実行します。

ansible-playbook -i inventory.ini nginx.yml

これで、対象サーバーにNginxをインストールし、サービスを起動できます。


Ansibleで初心者がハマりやすいポイント

1. SSH接続できない

Ansibleは対象サーバーに接続できなければ何もできません。

まずはAnsibleを実行する端末から、普通にSSH接続できるか確認しましょう。

ssh ubuntu@192.168.10.11

SSHできない場合は、Ansible以前の問題です。

IPアドレスが間違っている
ユーザー名が違う
秘密鍵が違う
セキュリティグループやファイアウォールで閉じている
authorized_keysに公開鍵が登録されていない

このあたりを確認しましょう。


2. Inventoryの書き方を間違える

Inventoryのホスト名、IP、ユーザー名を間違えると接続できません。

たとえば、次のように書けます。

[web]
web01 ansible_host=192.168.10.11 ansible_user=ubuntu

秘密鍵を指定する場合は、次のように書くこともあります。

[web]
web01 ansible_host=192.168.10.11 ansible_user=ubuntu ansible_ssh_private_key_file=~/.ssh/id_rsa

ただし、秘密鍵のパスや権限にも注意が必要です。


3. become: true を忘れる

パッケージインストールやサービス操作には管理者権限が必要です。

そのため、Playbookに become: true が必要になることがあります。

- name: Setup server
  hosts: web
  become: true

これを忘れると、権限不足で失敗します。

Permission denied
You must be root
Operation not permitted

のようなエラーが出たら、権限まわりを確認しましょう。


4. YAMLのインデントミス

AnsibleのPlaybookはYAMLで書きます。

YAMLはインデントが重要です。

悪い例です。

- name: Setup nginx
  hosts: web
  tasks:
  - name: Install nginx
    ansible.builtin.apt:
    name: nginx
    state: present

正しい例です。

- name: Setup nginx
  hosts: web
  tasks:
    - name: Install nginx
      ansible.builtin.apt:
        name: nginx
        state: present

YAMLのインデントが崩れると、Ansible以前に構文エラーになります。

初心者は、エディタのYAML補完やフォーマット機能を使うとよいです。


5. shellに頼りすぎる

Ansibleでは shellcommand Moduleも使えます。

しかし、何でもshellで書くのはおすすめしません。

悪い例です。

- name: Install nginx
  ansible.builtin.shell: apt install -y nginx

良い例です。

- name: Install nginx
  ansible.builtin.apt:
    name: nginx
    state: present

Moduleを使う方が、冪等性を保ちやすく、状態もわかりやすくなります。


6. 本番にいきなり流す

Ansibleは強力です。

そのため、間違ったPlaybookを本番環境に流すと危険です。

最初は必ず検証環境で試しましょう。

また、次のようなコマンドも活用できます。

ansible-playbook -i inventory.ini nginx.yml --check

--check は、実際には変更せずに、変更される可能性がある内容を確認するためのモードです。

ただし、すべてのModuleが完全にcheck modeに対応しているわけではないため、過信は禁物です。


Ansibleを学ぶ順番

初心者は、次の順番で学ぶのがおすすめです。

1. Ansibleの全体像を理解する
2. Inventoryを書く
3. Ad-hocコマンドを試す
4. 簡単なPlaybookを書く
5. Moduleを使い分ける
6. 変数を使う
7. templateを使う
8. handlerを使う
9. Roleで整理する
10. CollectionやVaultを学ぶ

いきなりRole、Vault、CI/CD連携、AWX、Automation Platformまで学ぼうとすると挫折しやすいです。

まずは、1台のサーバーに対してNginxをインストールできるところから始めましょう。


変数を使う

Ansibleでは、変数を使ってPlaybookを柔軟にできます。

たとえば、インストールするパッケージ名を変数にします。

- name: Setup package
  hosts: web
  become: true

  vars:
    package_name: nginx

  tasks:
    - name: Install package
      ansible.builtin.apt:
        name: "{{ package_name }}"
        state: present

変数を使うと、環境ごとの差分を管理しやすくなります。

開発環境
検証環境
本番環境

で設定値を変えるような場合に便利です。


Templateを使う

設定ファイルを配置するときは、copy より template が便利なことがあります。

たとえば、Nginxの設定ファイルに環境ごとの値を埋め込みたい場合です。

templates/nginx.conf.j2 を作ります。

server {
    listen 80;
    server_name {{ server_name }};

    location / {
        proxy_pass http://127.0.0.1:{{ app_port }};
    }
}

Playbookでは次のように使います。

- name: Deploy nginx config
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/conf.d/app.conf

変数を使って設定ファイルを生成できるため、環境ごとの差分を管理しやすくなります。


Handlerを使う

設定ファイルを変更したときだけサービスを再起動したい場合は、Handlerを使います。

- name: Deploy nginx config
  ansible.builtin.template:
    src: nginx.conf.j2
    dest: /etc/nginx/conf.d/app.conf
  notify: Restart nginx

handlers:
  - name: Restart nginx
    ansible.builtin.service:
      name: nginx
      state: restarted

この例では、設定ファイルに変更があったときだけ Restart nginx が実行されます。

毎回サービスを再起動するより安全です。


Ansible Vaultとは?

Ansibleでは、パスワードやAPIキーなどの秘密情報を扱うことがあります。

しかし、秘密情報をそのままGitにコミットするのは危険です。

そのような場合に使うのが Ansible Vault です。

Ansible Vaultを使うと、変数ファイルなどを暗号化できます。

ansible-vault create secrets.yml

実行時は次のようにします。

ansible-playbook -i inventory.ini site.yml --ask-vault-pass

初心者のうちは後回しでもよいですが、実務でAnsibleを使うならVaultは重要です。


AnsibleとTerraformの違い

初心者が混乱しやすいのが、AnsibleとTerraformの違いです。

ざっくり言うと、次のような違いがあります。

ツール得意なこと
Terraformクラウドリソースの作成・変更
Ansibleサーバー内部の設定・ミドルウェア構築

たとえば、AWSでEC2やRDSを作るならTerraformが向いています。

作成されたEC2の中にNginxやアプリを入れるならAnsibleが向いています。

Terraform:インフラの箱を作る
Ansible:箱の中身を設定する

もちろん、使い方によっては重なる部分もあります。

しかし初心者は、このように役割を分けて理解するとわかりやすいです。


Ansibleを2026年に学ぶ意味はある?

結論として、あります。

Ansibleは古いツールというより、今でも運用自動化の基本として使われる場面が多いです。

特に次のような現場では役に立ちます。

Linuxサーバーを運用している
オンプレ環境がある
複数台のサーバーを管理している
手作業の手順書が多い
アプリのデプロイを自動化したい
ミドルウェア設定をコード化したい
Terraform後のサーバー設定を自動化したい

Kubernetesやコンテナの時代でも、すべてがコンテナだけで完結するわけではありません。

サーバー、ネットワーク機器、VM、OS設定、ミドルウェア設定などを扱う場面では、Ansibleの知識はまだ有用です。


初心者がまず作るべきPlaybook

初心者が最初に作るなら、次のようなPlaybookがおすすめです。

パッケージ更新
Nginxインストール
設定ファイル配置
サービス起動
ユーザー作成
ディレクトリ作成

たとえば、次のようなPlaybookです。

- name: Basic server setup
  hosts: web
  become: true

  tasks:
    - name: Update apt cache
      ansible.builtin.apt:
        update_cache: true

    - name: Install required packages
      ansible.builtin.apt:
        name:
          - nginx
          - git
          - curl
        state: present

    - name: Create app directory
      ansible.builtin.file:
        path: /var/www/app
        state: directory
        owner: www-data
        group: www-data
        mode: "0755"

    - name: Ensure nginx is running
      ansible.builtin.service:
        name: nginx
        state: started
        enabled: true

このくらいのPlaybookを書けるようになると、Ansibleの基本はかなり見えてきます。


Ansible入門で覚えるべきコマンド

初心者が最初に覚えるべきコマンドは次の通りです。

ansible --version

Ansibleのバージョン確認。

ansible all -i inventory.ini -m ping

接続確認。

ansible all -i inventory.ini -a "uptime"

対象サーバーでコマンド実行。

ansible-playbook -i inventory.ini site.yml

Playbook実行。

ansible-playbook -i inventory.ini site.yml --check

変更予定の確認。

ansible-galaxy collection install community.general

Collectionのインストール。

まずはこのあたりを使えれば十分です。


Ansible入門のチェックリスト

Ansible初心者は、次のチェックリストを順番に潰していくとよいです。

Ansibleをインストールした
ansible --versionで確認した
対象サーバーにSSH接続できる
Inventoryを書いた
ansible -m pingが通った
簡単なPlaybookを書いた
ansible-playbookで実行した
become: trueの意味を理解した
Moduleを使ってパッケージを入れた
設定ファイルを配置した
サービスを起動した
Handlerを使った
変数を使った
Roleの考え方を理解した

このあたりまでできれば、Ansible入門としてはかなり十分です。


Ansibleでやってはいけないこと

初心者がやりがちな危険な使い方もあります。

本番環境でいきなり実行する
shellだけで全部書く
秘密情報を平文でGitに入れる
Inventoryを雑に管理する
エラーを読まずに何度も再実行する
冪等性を意識しない
Playbookを巨大な1ファイルにし続ける

Ansibleは便利ですが、強力なツールです。

間違ったPlaybookを流すと、本番環境を壊すこともあります。

最初は検証環境で試し、少しずつ本番に近づけるのが安全です。


まとめ

Ansibleは、サーバー構築や設定変更を自動化するためのツールです。

手作業で行っていた作業をPlaybookとしてコード化することで、同じ作業を何度でも再現しやすくなります。

初心者がまず理解すべきなのは、次の基本用語です。

Control node
Managed node
Inventory
Playbook
Task
Module
Role
Collection

Ansibleを使う流れはシンプルです。

対象サーバーを用意する
SSH接続できるようにする
Inventoryを書く
Playbookを書く
ansible-playbookで実行する

最初は難しく感じるかもしれませんが、1台の検証サーバーにNginxを入れるところから始めれば、かなり理解しやすくなります。

2026年にAnsibleを学ぶなら、まずは次の3つを目標にするとよいです。

Inventoryを書ける
Playbookを書ける
Moduleを使って冪等な構成管理ができる

Ansibleを使えるようになると、サーバー作業を「手順書を見ながら手作業するもの」から、「コードで管理して再現できるもの」に変えられます。

コメント

タイトルとURLをコピーしました