【入門編】Ansible Controller(旧AWX)のバックアップとリストア・障害復旧の完全手順 – インフラ構成管理(IaC)活用バイブル

エンジニアの皆さん、こんにちは。大規模インフラの自動化において、Ansible Automation Controller(旧AWX)はもはや「心臓部」です。しかし、心臓が止まったとき、その復旧手順を即座に脳内で再生できないのであれば、それは「システムを運用している」のではなく「神頼みで運用している」のと同じです。

今日は、現場で血を流しながら学んだ「Ansible Controllerの死なない設計と、死んでも蘇る設計」について語ります。これをマスターすれば、深夜の障害呼び出しに怯える必要はもうありません。

—

1. Enterpriseにおけるバックアップの哲学

「バックアップを取っている」という言葉は、実は無意味です。「リストアできる状態を維持している」ことが唯一の正義です。

Enterprise環境では、以下の3つの要素が物理的に分離されている必要があります。

  • PostgreSQLのデータ: すべての設定と実行履歴。
  • Secret Key: データベース内の機密情報を復号するための鍵。これを失えば、DBが残っていてもデータはゴミになります。
  • Projectデータ(Git): Playbookの実体。

2. awx-operator環境での完全バックアップ戦略

Kubernetes上で動くAutomation Controllerにおいて、バックアップの要は「PostgreSQLのダンプ」と「Secret Keyの保管」です。

手順A: データベースのダンプ

awx-operatorが管理するPostgreSQL Podを見つけ、中身を吸い出します。

PostgreSQL Podの特定
POD_NAME=$(kubectl get pods -n awx -l “app.kubernetes.io/name=awx,app.kubernetes.io/component=postgresql” -o jsonpath='{.items[0].metadata.name}’)

ダンプ実行 (production_db はデフォルトのDB名)
kubectl exec -it $POD_NAME -n awx — pg_dump -U awx -d awx > automation_controller_backup.sql

手順B: 命綱「Secret Key」の保護

ControllerのPod内にある `/etc/tower/SECRET_KEY` は、再インストール時に全く同じ文字列を指定しないと、DB内のパスワードや認証情報が復号できず、すべてのジョブが失敗します。

Secret Keyを抽出して安全な場所に保管
kubectl get secret awx-admin-password -n awx -o jsonpath='{.data.password}’ | base64 -d # 必要に応じて
最も重要なのはこれ
kubectl get secret awx-secret-key -n awx -o yaml > awx-secret-key-backup.yaml

—

3. 障害発生時の迅速なリカバリ手順

万が一、Controllerが全損した際の「最短復旧プロセス」は以下の通りです。

1. 新規クラスタの構築: `awx-operator` をデプロイします。
2. Secret Keyの復元: バックアップした `awx-secret-key` を適用します。(重要:デプロイ前に適用してください)
3. DBのリストア:

# 空のDBへ流し込む
cat automation_controller_backup.sql | kubectl exec -i $NEW_POD_NAME -n awx — psql -U awx -d awx

4. Operatorの同期: `AWX` カスタムリソースを更新し、Controllerを再起動させます。

—

4. 初心者へのエール:HelloWorld的な動作確認

「バックアップが取れた」と思っても、リストアできなければ意味がありません。以下の小さな手順で、自動化の「作法」を身体に染み込ませてください。

1. Job Templateの作成: 実行するだけの簡単なPlaybookを登録する。
2. Backup実行: 上記の手順でバックアップを取る。
3. 破壊: `kubectl delete awx awx-instance` を叩いてControllerを消す。
4. 復元: リストアを実行し、元のJob Templateが残っているか確認する。

「破壊」こそが最高の学習です。 壊れることを前提に設計されたシステムだけが、真に強靭(Resilient)なシステムと言えます。

—

現場のエンジニアから最後に

バックアップを自動化する際は、必ず 「S3やAzure Blob Storageへの転送」までを一つの自動化パイプラインに組み込んでください。 手動でローカルPCに保存したバックアップは、半年後にはどこにあるか分からなくなります。

「自動化のためのツールを、手動で管理してはいけない」。これがインフラエンジニアの鉄則です。

今日の手順を明日一度試してみてください。その瞬間、あなたは「障害に怯える運用の奴隷」から「システムを支配する設計者」へと一歩進化します。応援していますよ。

タイトルとURLをコピーしました