Ansible Navigatorで変える、インフラコードの「品質」と「速度」
現場のSRE諸君、まだ `ansible-playbook` コマンドを直接叩いて、ローカルのPython環境の差異に絶望しているのか?
「私の環境では動いたが、本番環境のEE(Execution Environment)では依存ライブラリで死んだ」――このセリフは、Ansibleの歴史において最も無駄なやり取りだ。`ansible-navigator` は単なるUIツールではない。君たちの開発体験(DX)を「環境依存の沼」から「コンテナベースの完全再現性」へと引き上げる、次世代のスタンダードだ。
今日は、私が現場で実際に採用している、生産性を最大化するための極限の運用術を伝授する。
—
1. なぜ今、`ansible-navigator` なのか?
従来のコマンドライン実行は、実行環境がブラックボックス化しやすい。`ansible-navigator` は、Ansible Automation Platform (AAP) の実行環境(EE)をローカルで完璧にエミュレートする。
導入の鉄則:
ローカルのPython環境を汚すな。`.venv` を管理する時代は終わった。Podman (またはDocker) をバックエンドに使い、プロジェクトごとに独立したEEを定義する。
pip経由でインストールするが、あくまでCLIツールとして扱う
pip install ansible-navigator
構成管理のベストプラクティス:ansible-navigator.ymlをプロジェクトルートに置く
これにより、チーム全員が同じイメージ、同じ設定で開発を始める
—
2. 開発スピードを加速させる「神」設定
プロジェクトルートに `ansible-navigator.yml` を配置し、設定をコードとしてコミットせよ。これがチーム開発の「正義」となる。
—
ansible-navigator:
execution-environment:
# チーム共通のカスタムEEを指定する(CI/CDと同期させること)
image: registry.example.com/sre/ansible-ee:latest
pull-policy: missing
container-engine: podman
ansible:
playbook:
# ログレベルを意図的に高くし、デバッグの初速を上げる
extra-vars:
ansible_debug: true
logging:
level: debug
file: ./logs/navigator.log
—
3. インタラクティブモード:デバッグの深淵
`ansible-navigator run site.yml -m stdout` などという退屈なコマンドは忘れろ。
単に `ansible-navigator run site.yml` を実行し、テキストUI(TUI)を使い倒せ。
現場で死ぬほど役に立つキーボードショートカット
- `0`: 実行結果の概要(Task一覧)に戻る。
- `Task ID` を直接指定: 失敗したTaskの詳細ログに瞬時にジャンプできる。
- `Ctrl + w`: 画面分割の切り替え。Task一覧と実行ログを並べて比較する際に必須。
- `o`: 実行結果のログを外部ファイルとしてエクスポートする。CIの失敗ログを共有する際、この機能が命を救う。
—
4. チーム開発における「実行環境(EE)」の切り替え術
トラブルシューティング時、特定のTaskだけ別のバージョンのコレクションで動かしたい時があるだろう。そんな時、`ansible-navigator` はプロファイルの切り替えで対応する。
`ansible-navigator.yml` に複数の `ansible-navigator` セクションを持たせるか、環境変数を使ってEEを切り替える構成を組め。
トラブルシューティング用:依存関係を厳格にしたEEで再実行
ANSIBLE_NAVIGATOR_CONFIG=navigator-debug.yml ansible-navigator run site.yml
—
5. 現場を救う「隠れた」テクニック
① 冪等性チェックを自動化せよ
`–check` モードをTUIで見るのは基本だが、さらに一歩進んで、「差分が出たら即座に停止する」CI設定と組み合わせるのがプロの流儀だ。
`ansible-navigator` で `–check –diff` を実行し、TUIのDiff表示機能を使って、期待値と実際の差分を視覚的に確認せよ。
② 必須プラグインの選定
Ansibleの実行環境には、以下のプラグイン(Collection)が標準搭載されたEEを作成しておくべきだ。
- `ansible.posix`: 権限管理やACL操作の標準。
- `community.general`: あらゆるAPI操作の万能包丁。
- `ansible.utils`: IPアドレス計算やデータ変換など、複雑なロジックをPlaybookに書く前にここで解決する。
—
結論:ツールに振り回されるな、ツールを支配しろ
`ansible-navigator` は、君たちの「思考のスピード」をインフラ構成に直結させるためのインターフェースだ。
- EEはコードで管理せよ(Dockerfileをリポジトリに入れろ)。
- TUIを使いこなし、ログ解析の時間を削れ。
- 設定ファイルはチームの共通言語とせよ。
「動いた」というレベルで満足するのは、エンジニアとしては三流だ。
「なぜ動いたのか、どの環境でも確実に再現できるのか」を証明し続けることこそが、SREとしての矜持である。
さあ、今すぐ `ansible-navigator` を起動し、君たちのPlaybookを現代の品質へと引き上げろ。現場からは以上だ。