概要
Enroll は、サーバーの現状を収集し、 Ansible のロールやPlaybookへ即座に変換可能。 ローカル ・ リモート どちらでも利用でき、 災害復旧 や構成の再現性確保に最適。 差分検出 ・通知機能も備え、構成管理の抜け漏れもカバー。 JinjaTurtle 連携でテンプレート化も自動化可能。 Debian系・Redhat系 のサーバーに対応。
Enrollの基本的な使い方
- サーバーの現状を 一括収集 し、 Ansible ロール/Playbook/インベントリへ変換
- enroll single-shot --harvest ./harvest --out ./ansible
- 収集後、ansible-playbook -i "localhost," -c local ./ansible/playbook.ymlでローカル適用
- 災害復旧スナップショット や「この1台を再現したい」用途、「ゴールデンロール」の作成に最適
- JinjaTurtle をインストールし、--jinjaturtleオプションで構成ファイルをテンプレート化
- 自動検出にも対応
リモート収集とローカル変換
- SSH経由 でリモートサーバーから情報収集し、ローカルでAnsible化
- enroll single-shot
--remote-host myhost.example.com
--remote-user myuser
--harvest /tmp/enroll-harvest
--out ./ansible
--fqdn myhost.example.com
- enroll single-shot
- sudo権限不要 の場合は--no-sudoを追加(ただし収集精度は低下)
マルチサイト・複数サーバー対応
- 複数サーバー の状態を一括収集し、ホスト固有の状態をインベントリで管理
- enroll harvest --out /tmp/enroll-harvest
- enroll manifest --harvest /tmp/enroll-harvest --out ./ansible --fqdn "$(hostname -f)"
- サーバーごとのPlaybook実行
- ansible-playbook ./ansible/playbooks/"$(hostname -f)".yml
- 運用指針
- シングルサイト:1台・可読性重視
- --fqdn運用:多台数・抽象度重視・迅速な導入
差分検出と通知
- 2つの収集データを比較し、 人間に分かりやすいレポート 出力
- enroll diff --old /path/to/harvestA --new /path/to/harvestB --format markdown
- Webhook通知 で変更検知を自動化
- enroll diff
--old /path/to/harvestA
--new /path/to/harvestB
--webhook https://example.net/webhook
--webhook-format json
--webhook-header 'X-Enroll-Secret: ...'
--exit-code
- enroll diff
Enrollの特徴・活用例
- 構成管理未導入サーバー の現状把握・再現性確保
- インストール済みパッケージ ・ 稼働中サービス ・ 初期状態から差分のあるファイル ・ 独自データ の収集
- 収集データは SBOM 的にも活用可能、Ansibleロール/Playbook/Inventoryへ即変換
- ローカル/リモート 両対応、 Debian系・Redhat系 サポート
- diffモード で構成ドリフト検知(現状は通知のみ、強制適用は未対応)
- 既存Ansible運用中でも「 記載漏れ」の検出に有用
- DR戦略 として「普段は手作りAnsible、バックグラウンドでEnrollによる全体スナップショット」運用も推奨
- JinjaTurtle連携 で設定ファイルのJinja2テンプレート化も可能
まとめ・コメント
- Enroll はサーバー現状の可視化・再現性確保・差分検知を 高速・簡単 に実現
- 構成管理の導入・強化、 災害復旧、 運用抜け漏れ防止 に最適
- 詳細なデモやドキュメントは 公式Webサイト 参照