Ansible あんしぶる
IaC構成管理自動化PlaybookエージェントレスRed Hat
Ansibleって何?
簡単に言うとこんな感じ!
Ansibleは「複数のサーバーにまとめてSSHでログインして、同じ設定を一気にやってくれる」自動化ツールだよ。「このサーバー50台全部にNginxをインストールして設定を適用して」みたいな作業を、1つのYAMLファイル(Playbook)に書いて実行するだけでOKなんだ!エージェント不要で使いやすいのが特徴!
Ansibleとは
Ansibleとは、Red Hatが開発・提供するサーバーの設定管理・ソフトウェアデプロイ・タスク自動化のためのIaCツールです。2012年にMichael DeHaanがOSS公開し、2015年にRed Hatが買収しました。最大の特徴はエージェントレスであること。対象のサーバーに専用エージェントをインストールする必要がなく、SSHと標準Pythonさえあれば動作します。
AnsibleはYAMLで記述したPlaybookという手順書で操作を定義します。Playbookは人間が読みやすく、プログラミングの経験が少ない運用担当者でも書けます。実行内容(タスク)はModuleとして提供されており、パッケージインストール・ファイルコピー・サービス起動・クラウドリソース操作など数千種類のModuleが公式・コミュニティで提供されています。
Ansibleは冪等性(べきとうせい)を重視します。「Nginxをインストールせよ」というタスクは、すでにインストール済みの場合は何もせず変更なしと報告します。これにより、同じPlaybookを何度実行しても安全です。
AnsibleとTerraformの役割分担
| 項目 | Ansible | Terraform |
|---|---|---|
| 主な用途 | サーバーの中の設定(ミドルウェア・アプリ・設定ファイル) | クラウドリソースの作成(VM・VPC・S3等) |
| アプローチ | 手続き的(順番にタスクを実行) | 宣言的(望ましい状態を定義) |
| エージェント | 不要(SSH経由) | 不要(APIを直接呼び出し) |
| 状態管理 | ステートレス(状態ファイルなし) | ステートフル(tfstateで管理) |
| 典型的な使い方 | VM作成後の設定・ミドルウェアセットアップ | VM・ネットワーク・DBの作成 |
歴史と背景
- 2012年2月:Michael DeHaanがAnsibleをGitHubで公開。シンプルさとエージェントレスが支持を集める
- 2013年:Ansible Inc.設立。エンタープライズサポートの提供開始
- 2015年10月:Red HatがAnsible Inc.を1億5000万ドルで買収
- 2016年〜:Ansible GalaxyにコミュニティRoleが蓄積。エコシステムが急成長
- 2019年:Red Hat Ansible Automation Platformとして企業向け製品を強化
- 2022年〜:Event-Driven Ansible(イベントトリガー自動化)の機能が追加
AnsibleのシンプルなPlayBook例
# webservers.yml: Webサーバーグループへの設定Playbook
---
- name: Webサーバーにnginxを設定する
hosts: webservers # インベントリで定義したホストグループ
become: true # sudo権限で実行
tasks:
- name: nginxをインストール
ansible.builtin.package:
name: nginx
state: present # インストール済みなら何もしない(冪等性)
- name: 設定ファイルをコピー
ansible.builtin.copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
mode: '0644'
- name: nginxを起動・自動起動設定
ansible.builtin.service:
name: nginx
state: started
enabled: true
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| Ansible Galaxy | AnsibleのRole・Collection(再利用可能な自動化コンテンツ)の公開レジストリ |
| Ansible Lint | PlaybookのベストプラクティスチェックツールのOSS |
関連用語
- IaC(Infrastructure as Code) — AnsibleはIaCの代表的な実装ツールの一つ
- Terraform — クラウドリソース作成に特化したIaCツール。Ansibleと相補的に使われる
- CI/CDパイプライン — AnsibleのPlaybook実行をパイプラインで自動化する
- Docker — Ansibleの導入により、DockerをサーバーにインストールしてコンテナをデプロイするPatternも
- GitOps — AnsibleのPlaybookをGitで管理し、変更を自動適用する運用へ発展できる
- SRE — 運用作業のToil削減にAnsibleを活用するSREの実践
- カオスエンジニアリング — 障害後の復旧シナリオをAnsibleで自動化することも可能