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 の例
あるタスクが、パッケージがインストールされ、サービスが実行中であることを保証します。
- 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 では、監査証跡を伴って構成とデプロイのステップを実行します。