Ansible Automation Controller(旧AWX)の死を恐れない:極限のバックアップ・リカバリ戦略
SREの現場において「IaCツールそのものが倒れた時」にどれだけ迅速に復旧できるか。これは、インフラチームの生存確率を左右する最も重要なメトリクスだ。
Ansible Automation Controller (以下AAC) は、単なる自動化ツールではない。組織の「権限」「認証情報」「実行履歴」が凝縮されたインフラの心臓部だ。今回は、Kubernetes環境(awx-operator)上でこの心臓を守り抜き、万が一の停止から瞬時に蘇生させるための「現場の最前線」の知見を共有する。
—
1. Enterprise環境におけるバックアップの哲学
多くのエンジニアは「データベースさえ抜けばいい」と勘違いしている。しかし、AACの復旧には以下の3点セットが揃っていなければならない。
- PostgreSQLのデータダンプ: 実行履歴、ジョブテンプレート、インベントリなど。
- 暗号化キー(Secret Key): これを失えば、DBが残っていても全Credentialはゴミと化す。
- Persistent Volume (PV): プロジェクトのソースコードやカスタム仮想環境。
「バックアップの自動化」は前提として、「リストア手順の自動化」までをコード化せよ。 障害時にマニュアルを読んでいる余裕はない。
—
2. awx-operator環境でのバックアップ・リストア手法
`awx-operator`環境では、`AWX`カスタムリソースの構成とデータベースの整合性が全てだ。
バックアップの神髄:DBダンプの戦略
Kubernetes上のPostgreSQL(または外部DB)から、以下のスクリプトで一貫性を保ったバックアップを自動取得する。
pg_dumpを実行し、整合性を保った状態でS3等へ転送するスクリプト例
ポイント: –clean –if-exists を付与し、リストア時の衝突を回避する
kubectl exec -it
–clean –if-exists –format=c > /backup/aac_db_$(date +%Y%m%d).dump
暗号化キーの退避(ここが生命線!)
AWXのSecretからSECRET_KEYを取得し、Vault経由で安全な場所に保管する
kubectl get secret
—
3. 障害からの迅速なリカバリ手順
リカバリの際、最も多いミスは「古いPVをマウントしたまま新しいDBを接続し、整合性を壊す」ことだ。
1. 環境のクリーンアップ: 既存のAWXリソースを削除し、Namespaceを空にする。
2. Secretの再構築: 退避していた `secret_key` を元にSecretを再作成する。
3. DBのインポート: 新しいPostgreSQLにダンプをリストアする。
4. AWXリソースのデプロイ: `AWX`カスタムリソースを適用し、`postgres_configuration` で既存DBを指定する。
プロの教訓: リストア時は必ず `image_pull_policy: Always` にし、バージョン不整合による「ログイン不能ループ」を回避すること。
—
4. 開発スピードを加速する「現場の神テクニック」
チーム開発で役立つ設定の共有ルール
Ansible ControllerのUIをポチポチ操作してはいけない。全ては `AWX` APIを通じたIaCで管理すべきだ。
- Repository構造のベストプラクティス:
# awx-resources/job_templates.yaml
- name: “System-Health-Check”
job_type: run
inventory: “Production-Inventory”
playbook: “site.yml”
credentials: [“SSH-Key-Prod”]
extra_vars: |
—
check_level: full
これを `awx-kit` (Ansibleコレクション) で流し込む。これにより、ControllerのUIが「表示専用」となり、変更の証跡がGit上に100%残る。
開発を劇的に速くするTips
1. CLIでの自動ログイン: `~/.netrc` に認証情報を記述し、`awx-cli` を常用せよ。`awx jobs list` などの結果を `jq` でパイプして状況を把握するのが、最も「速い」モニタリングだ。
2. 神プラグイン: VS Codeの `Ansible` 拡張機能だけでなく、`YAML` 拡張機能の `schema` 設定にController APIのJSON Schemaを紐付けろ。YAMLを書いている最中にリアルタイムでバリデーションが走る。
3. 隠れたキーボードショートカット: Controllerのジョブ実行画面では `Ctrl + Shift + Enter` を叩け。ログの表示がストリーミングモードになり、大規模なPlaybook実行時に画面の再描画を待たずに状況を追える。
—
最後に:SREとしてあるべき姿勢
バックアップとは「保険」ではない。「いつでも現在の環境を捨てて、別の場所に再構築できるという自信」そのものである。
明日、あなたの管理するAACのクラスタが消滅しても、上記の手順とGitにあるコードがあれば、1時間以内にサービスを復旧できるだろうか? 「できる」と即答できないなら、今すぐ `pg_dump` のスクリプトをCI/CDに組み込むべきだ。
技術は、壊れた時こそ、その真価が試される。備えよ、そして常に自動化せよ。