【2026年版】Ansibleの始め方 — インストールからサーバー自動化の第一歩まで完全ガイド
- Ansibleのインストールとインベントリの設定
- Playbookの基本構造(tasks/handlers/variables)
- べき等性(Idempotency)の概念
- 実際のWebサーバー設定自動化
実行前に用意するもの
以下はSSHで管理するUbuntu/Debian系の検証用サーバーを想定した例です。Python、SSH接続、パッケージ導入のsudo権限が必要です。実行前に ssh ユーザー名@ホスト名 で接続を確認し、インベントリに ansible_user=ユーザー名 を設定しましょう。sudoがパスワードを要求する場合は ansible-playbook に --ask-become-pass を追加します。本番ではなく検証用環境から試してください。
Pythonとpipxを用意したコントロールノードで pipx install --include-deps ansible を実行し、ansible --version で確認します。SSHや権限がまだ分からない場合は、先にLinux入門で基本を確認しましょう。
コマンド早見表
# hosts.ini と site.yml は別ファイルに保存
# hosts.ini:例のホスト名を自分の検証用サーバーに置き換える
[webservers]
web1.example.com
web2.example.com
[dbservers]
db1.example.com ansible_user=ubuntu
site.yml は同じディレクトリに保存します。この例の copy はローカルの nginx.conf が必要です。検証用サーバーで動作確認済みの設定を用意してください。最初はcopyタスクとhandlerを省き、導入と起動だけを試しても構いません。
# site.yml
---
- name: Webサーバーのセットアップ
hosts: webservers
become: true # sudo権限
tasks:
- name: Nginxをインストール
apt:
name: nginx
state: present
update_cache: true
- name: Nginxを起動・自動起動設定
service:
name: nginx
state: started
enabled: true
- name: 設定ファイルをコピー
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
notify: Reload Nginx
handlers:
- name: Reload Nginx
service:
name: nginx
state: reloaded
# 基本コマンド
ansible all -i hosts.ini -m ping # 疎通確認
ansible-playbook -i hosts.ini site.yml # Playbook実行
ansible-playbook -i hosts.ini site.yml --check # 変更予測(対応するモジュールのみ)
ansible-playbook -i hosts.ini site.yml --diff # 変更差分を表示
ansible-vault encrypt secrets.yml # 機密情報を暗号化
ansible-vault decrypt secrets.yml # 復号
ansible-galaxy install geerlingguy.nginx # Roleのインストール
--check は完全な動作確認ではありません。非対応のモジュールは予測できず、check_mode: false のタスクは変更する場合もあります。まず検証環境で結果を確認してください。--diff では設定の内容が表示されるため、秘密情報がログに出ないよう注意しましょう。
よくある詰まりポイント
Q. AnsibleとTerraformは何が違うの? Terraformは「インフラのリソースを作る・消す」担当で、AWSのEC2やRDSを定義ファイルから作成・削除・更新するよ。Ansibleは「作ったサーバーの中を設定する」担当で、OSにパッケージをインストールしたり設定ファイルを置いたりするよ。「インフラのセットアップ(Terraform)→ サーバーの設定(Ansible)→ アプリのデプロイ(Capistrano/CD)」という分業が一般的なんだ。
Q. エージェントレスって何がうれしいの? 管理対象にAnsibleの常駐エージェントを入れずに管理できるのがメリットだよ。通常のLinux管理ではSSH接続とモジュールに対応するPythonが必要です。素のOSでも使えると決めつけず、SSHユーザー・権限・Pythonの有無を確認しましょう。
Q. べき等性が崩れたらどうなるの?
べき等性が崩れると「2回目以降の実行で意図しない変更が発生する」問題が起きるよ。command のようにコマンドを実行するタスクは、creates などの条件や専用モジュールで不要な変更を抑えます。state: latest は新しい版が公開されたときに更新する指定で、常に同じバージョンを維持したい運用では state: present や版の固定を検討します。
次に読む記事を、目的で選ぶ
- 接続や権限でつまずいたら:Linux入門 — コマンド・権限の基本を確認する。
- サーバーを作るところから自動化したいなら:Terraform入門 — 構成管理との役割の違いを学ぶ。
参考資料
確認日:2026年10月5日。