前提条件

AnsibleForms をインストールする前に必要なもの

  1. 実行環境
  2. データベース
  3. サイジング
  4. ネットワーク
  5. ブラウザー
  6. スケーリング

実行環境

AnsibleForms は、コンテナーとして、サーバー自体の systemd サービスとして、または自分でビルドする場合は Node.js アプリケーションとして動作します。

インストール方法 必要なもの
インストーラー amd64 または arm64 の Linux、 curl または wget と sha256sum 、そしてインストール先のエンジンに必要なもの(下記)
ネイティブ root、systemd、対応する Linux(Ubuntu、Debian、RHEL とそのリビルド版、SUSE)。残りはインストーラーがインストールします
Docker Docker または Podman と、自前の MySQL サーバー
Docker Compose Docker Compose または podman-compose。MySQL もプロジェクトが起動します
Kubernetes クラスター、Helm 3、StorageClass(または事前に作成した PersistentVolume)
ソースから Node.js 26(最低でも 24)と npm、Git、そしてプレイブックを実行する RTE プロセス用の Ansible

アプリのイメージ ghcr.io/ansibleforms/ansibleforms には、Node.js とサーバーが呼び出すツール(git、ssh、mariadb クライアント、 ytt)が含まれていますが、Python と Ansible は含まれていません。プレイブックは RTE(ランタイム環境)で実行されます。これは ghcr.io/ansibleforms/ansibleforms-rte-full 、または ansibleforms-rte-core をベースに自分でビルドしたイメージから起動する 2 つ目のコンテナーです( スケーリング を参照)。 AWX、AAP、Ascender、Semaphore、Rundeck、Jenkins のテンプレートを起動するだけのフォームには RTE は不要です。


データベース

AnsibleForms は、ジョブ、ユーザー、認証情報、接続を MySQL 8 以降または MariaDB に保存します。

初回起動時に、 AnsibleForms スキーマを自分で作成します。root ではなく専用のデータベースユーザーを用意し、そのスキーマに対する権限だけを 与えてください。

CREATE USER 'ansibleforms'@'%' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON `AnsibleForms`.* TO 'ansibleforms'@'%';

必要なのはこれだけです。この権限でスキーマを作成・更新し、バックアップを取り、ワーカーが複数ある場合は停止したワーカーのセッションを終了します。 ユーザーがすべてのデータベースに権限を持っている場合は、 ステータス ページとログに警告が出ます。アプリノードとワーカーはこの ユーザーで接続します。ソケットモード(アウトバウンドまたはインバウンド、 モード を参照)の RTE はデータベースの認証情報を持ちません。接続するのは、 7.3.0 以降非推奨のデータベースモードの RTE だけです。スキーマを自分で作成するには、 ALLOW_SCHEMA_CREATION を 0 に設定します。 Docker Compose プロジェクトと Helm チャート( mysql:8.4 を使用)は、データベースを起動してくれます。


サイジング

測定に基づく要件はありません。負荷は主に、同時に実行されるジョブの数と、ジョブが書き出す出力の量で決まります。 Helm チャートの既定のリソースは、小規模なチームにとって妥当な出発点です。

コンポーネント 要求 上限 ボリューム
AnsibleForms 1 CPU、メモリ 1 GiB 4 CPU、メモリ 4 GiB 10 GiB
MySQL 0.5 CPU、メモリ 512 MiB 2 CPU、メモリ 2 GiB 10 GiB

アプリのコンテナーはプレイブックを実行しません。各プレイブックは、RTE 上でフォークを伴う ansible-playbook プロセスとして動きます。各 RTE の CPU と メモリは、同時に実行するプレイブック(最大 RTE_MAX_JOBS 、既定は 10 )に合わせて見積もり、さらに多く実行するには RTE を増やします。AWX、AAP、Ascender、その他のテンプレートランナーで実行されるジョブは、AnsibleForms にはほとんど負荷をかけません。

ジョブの出力は、既定ではデータベースに無期限に保存されます。利用の多いインスタンスでは JOB_RETENTION_DAYS を設定し、データベースが際限なく大きくならないようにしてください。


ネットワーク

アプリと各 RTE はそれぞれ専用のポートで待ち受け、フォームと設定が使うシステムへのアウトバウンド接続を開きます。

インバウンド

サーバーはポート 8000 ( PORT )で、HTTP で、または HTTPS を 1 に設定した場合は HTTPS で待ち受けます。Docker Compose プロジェクトはポート 443 で公開し、 Helm チャートはサービスまたは Ingress で公開します。RTE も専用の PORT で待ち受けますが、呼び出すのはアプリだけなので、 公開ネットワークからは切り離してください。アウトバウンドの RTE はインバウンドのポートをまったく必要としません。アプリのポートでアプリに接続します。

アウトバウンド

AnsibleForms から、使用するシステムへの接続を開放します。

接続先 用途
MySQL / MariaDB AnsibleForms のデータベース( DB_HOST 、 DB_PORT 、既定は 3306 )
RTE インバウンドの RTE に、そのランナーのアドレスで 1 本の WebSocket を使って接続します。またはデータベースモードの RTE を RTE_URL で呼び出し、その RTE が自分で MySQL に接続します。アウトバウンドの RTE は逆にアプリに接続します( モード を参照)
AWX、AAP、Ascender、Semaphore、Rundeck、Jenkins ランナー 上のテンプレートとジョブを、その HTTP(S) API で起動・追跡します
管理対象ホスト プレイブックが RTE から、たとえば SSH や WinRM で接続します
LDAP、Entra ID、OIDC ディレクトリやシングルサインオンのアカウントでのログイン
Git サーバー HTTPS または SSH でのリポジトリのクローンと pull
REST API とデータベース フォームの式とクエリのデータソース
HashiCorp Vault、CyberArk シークレットストア からの認証情報の読み取り
メールサーバー、Slack、Teams、Telegram、Webhook 通知チャネル によるジョブの通知と承認依頼
モデルプロバイダー チャットアシスタント 。有効にした場合のみ

式の REST 関数が呼び出せるホストを制限するには、 REST_ALLOWED_HOSTS と REST_DENIED_HOSTS を参照してください。


ブラウザー

Web アプリケーションは最新のブラウザー向けに作られています。Chrome または Edge 111、Firefox 114、Safari 16.4 以降です。 それより古いブラウザーには対応していません。


スケーリング

既定では、1 つの AnsibleForms コンテナーが Web アプリとバックグラウンド処理をまとめて実行し、その隣で 1 つの RTE が動きます。

より多くのユーザーに対応するには、ロードバランサーの背後で複数のアプリノード( AF_ROLE=app )を、ワーカー( AF_ROLE=worker )と並べて動かします。ワーカーは スケジュール、バックアップ、その他のバックグラウンド処理を実行します。同時に動くワーカーは 1 つだけで、2 つ目は引き継ぎに備えて待機します。これらは データベース、永続フォルダー、 ACCESS_TOKEN_SECRET 、 ENCRYPTION_SECRET を共有します。 スケーリング を参照してください。より多くのプレイブックを同時に実行するには、 RTE を増やします。 複数の RTE を参照してください。