Skip to content

Ansible

Description:
構成管理とアプリケーションデプロイを自動化するツール
Updated:
2026/02/12
  • プラグイン方式による拡張: 対応するモジュールを追加するだけで、環境に合わせた柔軟な機能拡張が可能。
  • 冪等性(べきとうせい)の保証: 同じ操作を何度実行しても、システムがあるべき状態に保たれ、不整合の発生を防ぐ。
  • 活発な開発コミュニティ: GitHubでの人気が非常に高く、継続的なアップデートと豊富な情報源が確保されている。
  • APIを活用したシステム連携: 外部の自動化ツールやCI/CDパイプラインとシームレスに統合し、運用の自動化を加速できる。
  • 生成AIとの高い親和性: 自然言語によるPlaybookの自動生成や、エラー解析の支援など、AIを活用した効率的な開発が可能。

インストールガイド

活用デモ・設定方法

  • ホストの初期セットアップ: OSインストール直後のユーザー作成、SSH設定、パッケージ更新などの自動化。
  • コンテナ・オーケストレーション: Docker や Podman のインストールから、docker-compose を用いた複数サービスの展開。
  • 定期メンテナンス: システムアップデートや不要なログ・キャッシュの削除、SSL証明書の更新などの一括実行。
  • バックアップの自動化: 重要データのアーカイブ作成から、リモートストレージやクラウドへの転送。
  • Playbook の自動生成: ChatGPT などの LLM を使い、自然言語での指示から Playbook の雛形を作成。
  • エラー修正の支援: 実行時に発生したエラーログを AI に解析させ、修正案や代替モジュールの提案を受ける。
  • ドキュメントからの構成管理化: 基盤構成の設計書やメモを AI に読み込ませ、コード(IaC)に変換。
  • 自動ワークフローへの組み込み: difyやn8nなどのワークフローツールと連携して、自動化ワークフローを構築。

graph LR
    subgraph ControlNode ["コントロールノード (管理側)"]
        CLI["Ansibleホスト"]
    end

    subgraph ManagedNodes ["ターゲットノード (操作対象)"]
        Srv["Linux / RPi"]
        WindowsSrv["Windows"]
    end

    CLI -- SSH/WinRM --> ManagedNodes
graph LR
    subgraph ControlNode ["コントロールノード (管理側)"]
        CLI["Ansibleホスト"]
        AWX["AWX (GUI / API)"]
    end

    subgraph ManagedNodes ["ターゲットノード (操作対象)"]
        Srv["Linux / RPi"]
        WindowsSrv["Windows"]
    end

    CLI -- SSH/WinRM --> ManagedNodes
    AWX -- SSH/WinRM --> ManagedNodes
    AWX -. API .- CLI
sudo apt update
sudo apt install ansible
  • ・インストール場所はAnsibleホスト(Linux/macOS)になります

Ansible を動作させるための最小限の構成は以下の通りです:

  • ansible.cfg: インベントリファイルの場所やデフォルトのリモートユーザーなど、Ansible の動作設定を記述します。
  • インベントリファイル (通常は hosts という名前): 操作対象となるサーバーの IP アドレスやホスト名をグループ分けして記述します。Ansible の用語では「インベントリ(Inventory)」と呼びますが、慣習的にファイル名として hosts がよく使われます(INI形式やYAML形式が利用可能)。
  • Playbook (.yml): 実際の「何を自動化するか」という手順を記述したファイルです。

ad-hoc コマンド(一時的な実行)であれば、インベントリファイルさえあれば動作しますが、管理をコード化(IaC)する場合はこの 3 つが基本セットとなります。

  1. ansible.cfg
sudo nano /etc/ansible/ansible.cfg
[defaults]
inventory = /etc/ansible/hosts
remote_user = ubuntu
private_key_file = ~/.ssh/id_rsa
  1. hosts
sudo nano /etc/ansible/hosts
[all]
192.168.1.1
  1. playbook
sudo nano /etc/ansible/playbook.yml
- name: ping
  hosts: all
  tasks:
    - name: ping
      ping:
ansible-playbook playbook.yml

Ansible は SSH を介して対象ホストを操作するため、パスワードなしでログインできる「公開鍵認証」を設定するのが一般的です。

コントロールノード(Ansibleホスト)でキーペアを作成します。すでにある場合はスキップしてください。

ssh-keygen -t ed25519 -C "ansible-key"
# 全てエンター(パスフレーズなし)を推奨
  • ・-t : 作成する鍵のタイプ(アルゴリズム)を指定します。Ed25519 は最新の標準であり、RSA よりも高速で、短い鍵長で非常に高いセキュリティを提供します。
  • ・-C : 鍵の末尾に記録されるコメントを指定します。一般的には、用途や作成者を識別するために使用されます

3.2. 公開鍵をターゲットホストへ配布

Section titled “3.2. 公開鍵をターゲットホストへ配布”

作成した公開鍵を操作対象のサーバーにコピーします。

ssh-copy-id -i ~/.ssh/id_ed25519.pub ubuntu@192.168.1.1

パスワードなしでログインできるか確認します。

ssh ubuntu@192.168.1.1

ansible all -m ping
192.168.1.1 | SUCCESS => {
    "changed": false,
    "ping": "pong"
}