Skip to content
Latchkey

Ansible とは? 構成管理の解説

Ansible は、YAML playbook に定義された順序付きタスクを SSH 経由で実行することで、サーバーを構成しソフトウェアをデプロイする agentless な自動化ツールです。

Ansible は、マシンを構成する繰り返し作業(パッケージのインストール、設定ファイルの編集、サービスの起動)を自動化します。agentless で SSH 経由で接続し、望ましい構成を読みやすい YAML playbook で記述するため、開発者にとってもオペレーターにとっても扱いやすいツールです。

Ansible とは

Ansible は、構成管理、アプリケーションのデプロイ、オーケストレーションのためのオープンソースの自動化ツールです。管理対象ホストに SSH 経由で接続し(エージェント不要)、各ホストがどうあるべきかを playbook で記述します。playbook は、状態を強制するためにモジュールを呼び出すタスクの順序付きリストです。

playbook と idempotency

playbook はタスクを列挙し、各タスクがモジュール(パッケージのインストール、ファイルのコピー、サービスの再起動)を呼び出します。モジュールは idempotent であるように設計されています。playbook を 2 回実行しても、すでに完了している作業をやり直すことなく、システムは同じ状態に保たれます。inventory ファイルには、playbook が対象とするホストとグループが列挙されます。

playbook の例

あるタスクが、パッケージがインストールされ、サービスが実行中であることを保証します。

A minimal Ansible playbook
- hosts: web
  tasks:
    - name: Install nginx
      apt: { name: nginx, state: present }
    - name: Start nginx
      service: { name: nginx, state: started }

CI/CD における役割

CI/CD では、Ansible は構成とデプロイのステップを実行します。pipeline は、build が通った後に playbook を実行してサーバーを構成したり、新しいアプリバージョンを展開したりできます。CI から playbook を実行すると、一貫性と監査証跡が得られます。pipeline で "--check" モードを使うと、変更を適用せずにプレビューでき、dry run に似ています。

代替手段

Terraform はインフラをプロビジョニング(サーバーの作成)し、Ansible はそれらを構成します。この 2 つは併用されることが多いです。Chef と Puppet はエージェントベースの構成ツールです。Salt も選択肢の 1 つです。Ansible は agentless で、始めやすく、読みやすい点で好まれています。

重要なポイント

  • Ansible は YAML playbook を使い、SSH 経由で agentless にサーバーを構成します。
  • モジュールは idempotent であるため、再実行すると同じ状態に収束します。
  • CI では、監査証跡を伴って構成とデプロイのステップを実行します。

関連ガイド