ソースから

AnsibleForms をソースからビルドし、Node.js で実行します

  1. コードの構成
  2. 前提条件
  3. コードを取得する
  4. ビルドする
  5. 設定する
  6. 実行する
  7. 初回実行

コードの構成

リポジトリには 2 つの Node.js アプリケーションが含まれており、ビルドでそれらを 1 つにまとめます。

  • client : Web インターフェース。Vue 3 で書かれ、Vite で静的ファイルにビルドされます
  • server : API。Express で書かれています。ジョブをランナーに渡し、データベースに接続し、ビルドしたクライアントを配信します。 AF_ROLE=rte で起動すると、同じサーバーがプレイブックを実行する RTE(ランタイム環境)になります

ビルドするのはクライアントだけです。その出力は Docker イメージ と同じく、サーバーの views フォルダーに入ります。


前提条件

ソースからビルドして実行するには、Linux の確かなスキルと Node.js についてある程度の知識が必要です。すべてのコンポーネントを自分でインストールします。 コンテナーを使わず、ビルドもせずに AnsibleForms を動かしたい場合は、インストーラーの ネイティブインストール がこれをすべて代わりに行います。

  • Node.js 26 ( .nvmrc のバージョン。最低でも 24)と npm
  • Git 。コードの取得とリポジトリの同期に使います
  • OpenSSH クライアント (SSH 経由の git 用)と sshpass (SSH パスワードで接続するプレイブック用)
  • MariaDB クライアント ( mariadb 、 mariadb-dump )。バックアップと復元に使います。MySQL サーバーの場合も必要です
  • MySQL 8 以上または MariaDB 。サーバーから到達できること
  • Ansible 。プレイブックを実行する RTE プロセス用です(パス上に ansible-playbook )。アプリのプロセス自体には Ansible も Python も不要で、テンプレートフォーム(AWX、AAP、Ascender、その他のランナー)だけなら RTE はまったく不要です

ディストリビューションに合わせてインストールします。

Node.js 26 は NodeSource のリポジトリから、その他のツールは Ubuntu 自体から入手します。

curl -fsSL https://deb.nodesource.com/setup_26.x | sudo -E bash -
sudo apt-get install -y nodejs git openssh-client sshpass mariadb-client python3 python3-pip ansible

node --version (26)と ansible-playbook --version を確認します。データベースとそのユーザーについては MySQL をインストールする を参照してください。


コードを取得する

アプリケーションを実行するユーザーが所有する任意のフォルダーに、リポジトリをクローンします。例では /srv/apps/ansibleforms を使います。

sudo mkdir -p /srv/apps
sudo chown $USER /srv/apps
cd /srv/apps
git clone https://github.com/ansibleforms/ansibleforms.git
cd ansibleforms

ビルドする

リポジトリのフォルダーから 3 つのステップでビルドします。まずクライアントをビルドします。

cd client
npm ci
npm run build

次にサーバーの依存関係をインストールします。

cd ../server
npm ci --omit=dev

最後に、ビルドしたクライアントをサーバーの views フォルダーにコピーします。

rm -rf views
mkdir views
cp -r ../client/dist/. views/

設定する

サーバーは環境変数から設定を読み取ります。本番環境では、設定ページが書き込むファイル server/persistent/.env からも 読み取ります。

リポジトリのルートにあるサンプルファイルから始め、少なくとも MySQL の接続設定( DB_HOST 、 DB_PORT 、 DB_USER 、 DB_PASSWORD )を設定します。

cd /srv/apps/ansibleforms/server
mkdir -p persistent
cp ../.env.example persistent/.env

すべての変数は 環境変数 で説明しています。それ以外のものは既定で server/persistent に保存されます。 config.yaml 、 forms フォルダー、自己署名証明書は初回起動時にここに作成され、ログもここに置かれます。 プレイブックは server/persistent/playbooks に置くか、それを読み取る RTE の環境で ANSIBLE_PATH を別の場所に向けてください。


実行する

AnsibleForms を本番モードで実行するか、コード自体を開発する場合は開発モードで実行します。

server フォルダーからサーバーを本番モードで起動します。

cd /srv/apps/ansibleforms/server
npm run start

コマンドラインから起動したアプリケーションは、ログオフすると停止します。 PM2 を使うと、 バックグラウンドで動かし続け、クラッシュ後に再起動し、起動時にも自動で開始できます。

sudo npm install -g pm2

cd /srv/apps/ansibleforms/server
NODE_ENV=production pm2 start index.js --name ansibleforms
pm2 save
pm2 startup   # prints the command that starts PM2 at boot

プレイブックは RTE で実行されます。同じサーバーを AF_ROLE=rte で、専用のポートでもう一度起動します。アプリは RTE に接続して 1 本の WebSocket を開いたままにし( RTE_MODE=inbound 、 モード を参照)、RTE は同じフォルダーからプレイブックを実行します ( RTE_FILES=local )。RTE も persistent/.env を読み取りますが、データベースの設定は一切使いません。アプリと RTE が共有する 16 文字以上のトークンと、 RTE を宣言する設定シードを persistent/.env に追加します。

RTE_TOKEN=<at least 16 characters>
CONFIG_SEED_PATH=/srv/apps/ansibleforms/server/persistent/seed.yaml

設定シード は、RTE のアドレスとトークンを持つ RTE の認証情報と、それでサインインする既定のランナー rte を 宣言します。

version: 1
credentials:
  items:
    - name: rte
      credential_type: rte
      url: http://127.0.0.1:8010
      password: ${RTE_TOKEN}
runners:
  items:
    - name: rte
      type: rte
      rte_mode: inbound
      credential: rte
      is_default: true

シードを使わない場合は、 接続 > 認証情報 (そのアドレスとトークンを持つ RTE の認証情報)と 接続 > ランナー (種類 RTE、 モード は インバウンド )で追加します。その後、 127.0.0.1 だけで RTE を起動します。

cd /srv/apps/ansibleforms/server
AF_ROLE=rte RTE_MODE=inbound RTE_FILES=local PORT=8010 HTTPS=0 LISTEN_HOST=127.0.0.1 \
  NODE_ENV=production pm2 start index.js --name ansibleforms-rte
pm2 save

RTE の設定は RTE を実行する ページで説明しています。PM2 に両方のプロセスが表示されることを確認します。

pm2 status

どちらも online です。

+----+------------------+------+---------+------+--------+----------+--------+-----+---------+------+----------+
| id | name             | mode | version | pid  | uptime | restarts | status | cpu | mem     | user | watching |
+----+------------------+------+---------+------+--------+----------+--------+-----+---------+------+----------+
| 0  | ansibleforms     | fork | 7.0.0   | 3104 | 8s     | 0        | online | 0%  | 120.1mb | root | disabled |
| 1  | ansibleforms-rte | fork | 7.0.0   | 3187 | 5s     | 0        | online | 0%  | 80.4mb  | root | disabled |
+----+------------------+------+---------+------+--------+----------+--------+-----+---------+------+----------+

初回実行

ブラウザーでサーバーを開きます(サンプルの .env では https://your_ip:8443 )。空のデータベースでは、初回起動時に スキーマが作成されます。

既定の管理者の認証情報は次のとおりです。

  • ユーザー名 : admin
  • パスワード : AnsibleForms!123