自動化

Ansible AWXとは:AWX OperatorでKubernetesへ導入する手順とAAPとの違い【2.19.1】

Ansible AWXとは:AWX OperatorでKubernetesへ導入する手順とAAPとの違い【2.19.1】

AWXは、Ansibleの実行をWeb画面とREST APIから管理できる無償のオープンソースです。Red Hat Ansible Automation Platform(AAP)に含まれるautomation controller(旧Ansible Tower)の上流に位置するプロジェクトです。この記事では、2024年7月から続くリリース停止の現状を確認したうえで、AWX Operator 2.19.1をkustomizeでKubernetesへ導入する手順を、設定ファイルの記述例と実行コマンドを添えて解説します。外部PostgreSQLの接続、AWXBackupでの退避、本番で使うかAAPを選ぶかの判断まで扱います。

まとめ|AWXは検証用に無償で動くがリリース停止中で本番は条件付き

AWXを試すだけなら、Kubernetesクラスタとkubectlがあれば、YAML 2つとコマンド数行で画面にログインできます。導入手段はAWX Operatorが公式の推奨で、Operatorの最新は2024年7月2日公開の2.19.1です。Helmチャートはコミュニティのリポジトリへ移り、OperatorHubからは外れました。

本番で使うなら、外部PostgreSQLとAWXBackupの定期取得を最初から組み込んでください。セキュリティ修正の新版が出ない状態を自社で引き受けられるかが、AWXを選ぶかAAPを契約するかの分かれ目です。監査や24時間の問い合わせ窓口が要件なら、AWXは選びません。

Ansible AWXの役割とTower・AAPとの関係、2024年7月からのリリース停止

AWXの位置づけを押さえておくと、古い解説記事と現在の状況を読み分けられます。

AWXと旧Tower・controllerの違いは機能でなく保守の主体

Ansible本体はコマンドラインでPlaybookを実行する道具です。AWXはその上に、ジョブテンプレート、スケジュール、権限管理、実行履歴、REST APIを載せます。「ansible tower oss」と検索されるとおり、Towerのオープンソース版と考えて差し支えありません。

観点 AWX controller(旧Tower)
費用 無償 AAPの年額契約
提供元 コミュニティ Red Hat
サポート なし 24時間365日
版ごとの保守期間 公表なし 最低18か月

サポートと保守期間の値は、Red HatのAAPとコミュニティ版の比較ページによるものです。機能の多くは共通なので、ジョブテンプレートやSurveyの設定方法はAnsible Towerの機能と設定手順がそのままAWXにも当てはまります。違いは機能より、誰が不具合と脆弱性に責任を持つかにあります。

最終リリース24.6.1とOperator 2.19.1で止まった開発の現状

AWXのGitHubリポジトリの冒頭には、最終リリースが2024年7月2日であること、大規模なリファクタリングの間はリリースを停止することが明記されています。2026年10月時点でも最新は24.6.1のままで、GitHub APIで確認したAWX Operatorのリリースも同じ日の2.19.1が最後です。

開発そのものは止まっていません。リポジトリへのコミットは2026年10月にも続いています。ただし利用者が入れられる正式版は2年以上前のものだけです。依存するPythonライブラリやコンテナイメージに脆弱性が見つかっても、修正版のAWXは出てきません。この点を理解したうえで導入手順に進んでください。

AWX Operator導入用Kubernetesとkustomizeの前提条件

AWXのインストールガイドは、バージョン18.0以降の推奨手段をAWX Operatorとしています。Docker上でも動かせますが、開発やテスト向けで公式のリリースは無いと書かれています。

クラスタ・kubectl 1.14以降・StorageClassの3点を確認

Operatorの基本インストール手順が前提にするのは、稼働中のKubernetesクラスタと、kustomizeを内蔵したkubectl(1.14以降)です。検証ならMinikubeやKindでも構いません。

見落としやすいのは永続ボリュームです。Operatorが立てるPostgreSQLは、指定が無ければクラスタ既定のStorageClassで8GiBのボリュームを要求します。既定のStorageClassが無いクラスタではデータベースのPodが起動せず、AWX全体が待ち状態のまま止まります。導入前にkubectl get storageclassで「(default)」の付いた行があるか見ておきましょう。Kubernetesそのものの仕組みはKubernetesとはで解説しています。

Helmチャートの移管とOperatorHub掲載終了で変わった入れ方

2024年8月2日、AnsibleのフォーラムでOperatorの導入方法の変更が告知されました。OperatorHubへの掲載は終わり、Helmチャートのコードはansible-community組織の新しいリポジトリへ移っています。kustomizeとmake deployは引き続き使えると明言されました。

移管先のawx-operator-helmはライセンスがGPL-3.0で、チャートの最新は2026年3月12日の3.2.1です。古い記事にあるansible.github.io/awx-operatorをHelmのリポジトリに登録しても更新は届きません。どちらでも入れられますが、公式手順と同じ形で版を固定できるkustomizeを本記事では使います。

kustomizeでAWX Operator 2.19.1をKubernetesへ導入

作業用のディレクトリを1つ作り、その中にYAMLを2つ置いてkubectl apply -kを2回実行する流れです。

kustomization.yamlの作成とawx名前空間へのOperatorのデプロイ

まずOperatorだけを入れます。refとnewTagには同じ版を書いてください。食い違うと、Operatorのイメージが取得できずImagePullBackOffで止まります。

# kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - github.com/ansible/awx-operator/config/default?ref=2.19.1
images:
  - name: quay.io/ansible/awx-operator
    newTag: 2.19.1
namespace: awx

同じディレクトリで次を実行し、Operatorが動いているかを確かめます。

kubectl apply -k .
kubectl get pods -n awx
kubectl config set-context --current --namespace=awx

awx-operator-controller-managerで始まるPodがRunningになれば準備完了です。最後の1行で既定の名前空間をawxに切り替えておくと、以降のコマンドで-n awxを省けます。

AWXカスタムリソースの作成とadminパスワードの取り出し

次に、AWX本体の定義をawx-demo.ymlとして書きます。metadata.nameがそのままデプロイ名になり、Serviceや Secretの名前の頭に付きます。

---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
spec:
  service_type: nodeport

kustomization.yamlのresourcesに- awx-demo.ymlを1行足し、もう一度kubectl apply -k .を実行します。進み具合は次のコマンドで追えます。

kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager
kubectl get svc awx-demo-service
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode ; echo

2行目でNodePortの番号を確かめ、ブラウザでhttp://<ノードのIP>:<NodePort>/を開きます。ユーザー名はadmin、パスワードは3行目の出力です。Secret名は「デプロイ名-admin-password」の規則で決まるため、名前を変えたらここも合わせます。OpenShiftではservice_type: clusteripとingress_type: Routeに変えるとRouteが自動で作られます。

ログイン後の操作は、プロジェクトにGitリポジトリを登録し、インベントリと認証情報を作ってからジョブテンプレートを作る順になります。登録するPlaybookの書き方はAnsible Playbookの書き方と実行手順を参照してください。

本番運用で決めておく外部PostgreSQLの接続とAWXBackupによる退避

デモの手順のままでは、データベースもバックアップもクラスタの中だけにあります。実行履歴や認証情報を失ってよい検証環境以外では、次の2つを先に決めます。

外部PostgreSQLを使うSecretの書き方と既定のPostgreSQL 15

Operatorのデータベース設定の文書によると、既定ではOperatorがPostgreSQL 15をAWXと同じ名前空間に立てます。公式にテストされているのはこの既定の版だけで、新しい版を使いたい場合に推奨されているのは、外部データベースを使う構成です。外部に置くときは、次のSecretを作ってAWXのspecから参照します。

---
apiVersion: v1
kind: Secret
metadata:
  name: awx-demo-postgres-configuration
  namespace: awx
stringData:
  host: awx-db.example.internal
  port: "5432"
  database: awx
  username: awx
  password: ChangeMe2026
  sslmode: prefer
  target_session_attrs: read-write
  type: unmanaged
type: Opaque

AWX側にはpostgres_configuration_secret: awx-demo-postgres-configurationをspecに1行加えます。同じ文書は、パスワードにシングルクォート、ダブルクォート、バックスラッシュを含めるとデプロイやバックアップ、復元で問題が起きると注意しています。記号を含むパスワードを自動生成するツールを使っている場合は、生成規則から外してください。

AWXBackup・AWXRestoreで退避と復元を回す手順と注意点

バックアップもカスタムリソースで取ります。backupロールの説明に従い、退避元のデプロイ名を指定して適用します。

---
apiVersion: awx.ansible.com/v1beta1
kind: AWXBackup
metadata:
  name: awxbackup-2026-10-17
  namespace: awx
spec:
  deployment_name: awx-demo
  backup_storage_requirements: "20Gi"

バックアップはPVCの中にtarとして保存され、データベースのダンプに加えてsecret_keyやadmin_passwordのSecretも含みます。secret_keyは、データベース内の機密データを暗号化する鍵です。この鍵を失うと、データベースが残っていても登録済みの機密データを復号できません。バックアップ用PVCの閲覧権限は、本番の管理者と同じ範囲に絞るべきです。

復元はrestoreロールの説明のとおり、kind: AWXRestoreにdeployment_name(復元先)とbackup_name(上のmetadata.name)を書いて適用します。同じ名前で戻す場合は、先に古いAWXリソースとデータベースのPVCを消しておくことが必要です。アップグレード手順は名前空間を消さないよう警告しています。名前空間ごと消すと、バックアップとそのPVCも一緒に消えるためです。バックアップ用PVCは別の名前空間に置くか、取得後にクラスタの外へ写してください。

AWXを本番で使う条件とAAP契約やCLI運用を選ぶ場面の判断

判断の軸は、リリース停止中のソフトウェアの脆弱性対応を誰が持つかです。機能の差ではありません。

AWXで足りる条件:社内ネットワーク限定で脆弱性対応を自前で持てる体制

次の3つがすべて当てはまるなら、AWXで運用して構いません。1つ目は、画面とAPIを社内ネットワークやVPNの内側だけに置き、インターネットに公開しないこと。2つ目は、Kubernetesとコンテナイメージの脆弱性を定期的に調べ、必要なら自分たちでイメージを作り直せる担当者がいること。3つ目は、AWXが止まってもCLIのansible-playbookで同じ作業を続けられることです。

3つ目は見落とされがちです。Playbookとインベントリをすべてgitで管理しておけば、AWXは実行の窓口にすぎなくなり、障害時の逃げ道が残ります。

AWXを見送る場面:監査対応・外部公開・24時間の窓口が要件の組織

ISMSや内部統制の監査で、実行基盤の保守状況を問われる組織にはAWXを勧めません。「2024年7月以降、正式な修正版が出ていないソフトウェアで本番を変更している」と説明する必要が出るからです。この場合はAAPを契約するのが筋で、費用の見積もり方はAnsible Automation Platformの費用と導入判断で整理しました。

逆に、Playbookを書く人と実行する人が同じ数名で、画面が欲しいだけならAWXは過剰です。Kubernetesとデータベースの保守が丸ごと増えます。GitHub ActionsなどのCIからansible-playbookを走らせるか、軽量なSemaphore UIの導入を比べてください。どの構成が自社に合うか、実行基盤の設計からCI/CDへの組み込みまで相談したい場合は、DevOps・CI/CD導入支援で承っています。

よくある質問

Ansible AWXについて、検索されることの多い質問に答えます。

Ansible AWXは無料で使えますか?

使えます。AWXはオープンソースで、導入に使うAWX OperatorもApache-2.0ライセンスです。利用料はかかりません。必要なのは動かすためのKubernetesクラスタとストレージの費用です。ただし有償のサポートは無く、2024年7月2日の24.6.1以降は正式リリースが出ていません。障害対応と脆弱性対応は自社で持つ前提になります。

AWXとAnsible Towerの違いは何ですか?

AWXは、Ansible Tower(現在のautomation controller)の上流にあたるオープンソースのプロジェクトです。ジョブテンプレート、Survey、Webhook、RBACなど機能の多くは共通します。違いはRed Hatのサポート、版ごとの保守期間、認定コンテンツの有無です。Towerの改称の経緯と各機能の設定手順はAnsible Towerとはで扱っています。

AWXはKubernetesを使わずにDockerだけで動かせますか?

動かすこと自体はできます。ただしAWXのインストールガイドは、Dockerでの実行を開発やテスト向けとし、公式に公開されたリリースは無いと明記しています。本番を想定するならOperator経由でKubernetesに入れてください。小さく始めたい場合は、1台のサーバーにK3sなどの軽量なKubernetesを入れる方法がよく取られます。

AWX Operatorはどの版を指定すればよいですか?

新規に入れるなら、2026年10月時点の最新である2.19.1をrefとnewTagの両方に書きます。develブランチを指定すると未リリースの変更を取り込み、手順書どおりに動かない場合があります。既存環境のOperatorを上げるときは、先にAWXBackupを取ってから版を1つずつ上げてください。

AWXのsecret_keyを消してしまうとどうなりますか?

Operatorの管理者アカウント設定の文書によると、この鍵はデータベース内の機密データの暗号化に使われます。アップグレードやPodの再作成でも必要になるため、消してはいけないSecretです。指定しなければ「デプロイ名-secret-key」として自動生成されます。GitOpsで構成を管理する場合は、自分で作ったSecretをsecret_key_secretで渡しておくと、作り直しのたびに鍵が変わる事故を防げます。

関連記事

お気に入りに入れた記事の一覧

この記事は以下の記事からリンクされています

資料請求

今日のトレンド記事 直近 24 時間で、いつもより多く読まれている記事

  1. 2026.10.16 テックブログ バーガーキング不正アクセスで約1,118万件の情報漏洩|対象確認・案内メールの真偽と運営側のログ点検
  2. 2026.10.16 テックブログ ソースネクスト不正アクセスで最大2,252万件流出|ログインできない理由・パスワード再設定と会員APIの点検
  3. 2026.10.15 テックブログ リゾートトラスト不正アクセス:会員2.6万件・カハラ横浜3.6万件の対象確認と窓口
  4. 2026.10.15 テックブログ 銀のさら不正アクセス:最大650万件の対象確認と窓口、パスワード変更の手順
  5. 2026.10.16 テックブログ ワラウ不正アクセスで連携トークン流出|Yahoo! JAPAN ID再連携と対象確認

RELATED POSTS 関連記事

目次