RTE の実行

各モードの設定と、RTE の起動方法

  1. 設定
  2. 起動

設定

RTE に必要なものはモードによって異なります( モード を参照)。すべての RTE が次のものを読み込みます。

変数 意味
RTE_MODE 7.3.0 から: outbound (アプリに接続する)、 inbound (アプリが接続してくる)、 database (非推奨。7.x の間の既定)
RTE_TOKEN アプリと RTE の間のトークン。16 文字以上。これがないと RTE は起動を拒否します
RTE_MAX_JOBS 同時に実行するプレイブックの数。既定は 10 ( 0 で無制限)。満杯の RTE へのジョブは、プレイブックが終わるまで待機します
RTE_DRAIN_SECONDS 停止時に実行中のプレイブックを待つ時間。既定は 25 。その時点でまだ実行中のものは放棄されたものとして終了します
RTE_QUEUE_MINUTES RTE ではなく、アプリノードとワーカーが読み込みます。満杯または停止中の RTE をジョブが待つ時間。既定は 60
ANSIBLE_PATH 、 PROCESS_MAX_BUFFER プレイブックのフォルダーと出力の上限。RTE が読み込むので、RTE の環境で設定してください
LISTEN_HOST 7.3.0 から:リスナーがバインドするアドレス。既定ではすべてのインターフェース。外部から何も接続してこない場合(アウトバウンドの RTE)は 127.0.0.1

ソケットモード( outbound または inbound )の RTE は、さらに次のものを読み込み、 DB_* と ENCRYPTION_SECRET は読み込みません。

変数 意味
APP_URL 利用者が開くアプリのアドレス。例: https://forms.example.com 。アウトバウンド:接続先のアドレス。インバウンド:一度だけの登録の呼び出し先のアドレス
APP_TLS_VERIFY 1 (既定):アプリの証明書が有効である必要があります。 0 は何でも受け入れます。信頼できる一つのネットワークの中でだけ使います
RTE_NAME ランナーの名前で、フォームは runner: でこれを指定します。未設定の場合はノード ID rte-<hostname>-<port> で、コンテナーとともに変わります。本番環境では設定してください
RTE_JOIN_TOKEN 任意。初回のみ:API で作成する参加トークン。管理者を待たずにすぐにランナーを承認します( 参加トークン を参照)
RTE_URL インバウンドで参加を申請する場合:アプリが接続するアドレス。例: http://rte-dmz.example.com:8000
RTE_FILES transfer (既定):アプリがプレイブックとインベントリをジョブとともに送ります。 local :マウントした自分のフォルダーから実行します
RTE_SPOOL_PATH 各ジョブの出力、イベント、終了が、アプリが保存するまで待機する場所。既定は <persistent>/rte-spool 。ボリューム上に置いてください
RTE_CACHE_PATH transfer の場合:アプリが送ったフォルダーを保持する場所。既定は <persistent>/rte-files
RTE_CACHE_MB transfer の場合:それらのフォルダーが使える容量。既定は 1024 。最も長く使われていないものから削除され、 0 では何も保持しません
RTE_FILES_MAX_MB RTE ではなくアプリが読み込みます: transfer で送る最大のフォルダー。既定は 512

ソケットモードの RTE では、 RTE_MAX_JOBS 、 RTE_DRAIN_SECONDS 、 RTE_FILES 、 RTE_CACHE_MB をランナーのページの RTE タブでも設定できます。そこでの値が変数より優先され、変数は空のままのフィールドを埋めるだけになります( RTE の設定 を参照)。範囲外の値は上限または下限に合わせられ、RTE は起動時に その旨を伝えます。

データベースモード(非推奨)の RTE は、代わりにデータベースの設定を読み込み、自分自身を登録します。

変数 意味
DB_HOST 、 DB_PORT 、 DB_USER 、 DB_PASSWORD アプリと同じ値。RTE はデータベースからジョブを読み込み、そこに出力を書き込みます
RTE_URL アプリが RTE を呼び出すアドレス。例: http://rte:8000 。ランナーはホスト名( rte )にちなんで名前が付くので、フォームでは runner: rte を使えます
RTE_REGISTER 7.3.0 でデータベースモードとともに非推奨になりました。ソケットモードの RTE は代わりに参加トークンで参加します。 1 (既定):RTE は起動時に 接続 > ランナー に自分自身を追加し、最初のものが既定のランナーになります。 0 :そこで、または 構成シード で自分で追加します
ENCRYPTION_SECRET アプリと同じ値。自分自身を登録する場合にだけ必要です(ランナーのトークンは暗号化して保存されます)。 RTE_REGISTER=0 では省きます

データベースモードで RTE_URL がない場合、RTE は自分の IP アドレスとポートを rte-<hostname>-<port> という名前で登録しますが、これはコンテナーを 再作成すると変わります。本番環境では RTE_URL を設定してください。RTE が自分で登録したランナーは、RTE の最後のハートビートから 10 分後に ワーカーが削除します。


起動

RTE はプレイブックを実行するので、プレイブックが使う秘密鍵と known_hosts を含む ssh フォルダーと、スプールとアプリが送るファイルのための 永続フォルダーが必要です。モードを選んでください。

アプリに到達できる任意のホストで、独自のトークンとランナーに付ける名前を指定して RTE を起動します。

docker run -d --name rte-dmz --restart unless-stopped --stop-timeout 40 \
  -e RTE_MODE=outbound -e APP_URL=https://forms.example.com \
  -e RTE_NAME=rte-dmz -e RTE_TOKEN=<at least 16 characters> -e HTTPS=0 \
  -v /srv/apps/rte/persistent:/app/dist/persistent \
  -v /srv/apps/rte/ssh:/home/node/.ssh \
  ghcr.io/ansibleforms/ansibleforms-rte-full:7

RTE はアプリに接続して参加を申請します。 接続 > ランナー にはランナー rte-dmz が承認待ちとして表示され、そのログには トークンのフィンガープリントが表示されます。確認画面に同じフィンガープリントが表示されていることを確かめてから 承認 します( RTE の承認 を参照)。以降は自分の RTE_TOKEN でサインインしてジョブを受け取ります。 無人で起動するには -e RTE_JOIN_TOKEN=<a join token, afj_...> を追加すると、すぐに承認されます。このホストに到達する必要のあるものは 何もないので、ポートは公開しません。その PORT で待ち受けるのは、プローブ用の /live 、 /ready 、 /metrics だけです。

インバウンドの RTE は公開ネットワークに置かないでください。そのソケットは、トークンを持つどの呼び出し元にも応答します。 docker stop はコンテナーを強制終了するまで 10 秒しか待たないので、RTE にはより長い停止タイムアウト( --stop-timeout 、compose では stop_grace_period )を与えるか、 RTE_DRAIN_SECONDS を下げてください。Kubernetes は既定で 30 秒待ちます。

インストーラー は、専用のサーバー上で Docker、Podman、または コンテナーを使わずに アウトバウンドまたはインバウンドの RTE を構成し、承認に使うフィンガープリントを表示します。別のデータセンターで RTE を手動で実行するには、 別のデータセンター に従ってください。