概要
ansible-navigatorでPlaybookを実行する際、デフォルトで起動すると、ユーザからのインプットを受け取ることができず停止し続けてしまいます。
オプションで回避することが可能なので紹介します。
環境
ansible-navigator 25.5.0 ansible-runner 2.4.1
手順
以下2種類の方法でステップ実行を確認できました。
- コマンド実行時に
--ep/--enable-promptsオプションをつける - 設定ファイル(ansible-navigator.yml)で
enable-promptsをtrueにする
簡単なPlaybookで動作確認をします。
--- - name: enable promptのテスト hosts: localhost gather_facts: false tasks: - name: "ステップ1" ansible.builtin.debug: msg: "ステップ1" - name: "ステップ2" ansible.builtin.debug: msg: "ステップ2" - name: "ステップ3" ansible.builtin.debug: msg: "ステップ4"
anisble-navigator.ymlには、利用するイメージ(今回はbuiltin コレクションしか使わないので適当なものを使っています)のみ定義しました
--- ansible-navigator: execution-environment: image: localhost/ansible-execution-env pull: policy: never
まずは、デフォルト値の状態で実行します。
uv run ansible-navigator run test.yml --step
interactiveモードで起動しますが、灰色のまま処理が進みません。

続いて--epオプションを付与して実行します。
uv run ansible-navigator run test.yml --step --ep
stdoutモードで起動し、step実行時のプロント入力ができるようになりました。

ansible-navigator.ymlを修正しstdoutモードで起動するようにしてみます。
--- ansible-navigator: execution-environment: image: localhost/ansible-execution-env pull: policy: never mode: stdout
enable-promptsのオプションがないと、プロンプトが表示されずに処理が止まってしまいます。

enable-promptsをtrueに明示して再実行をすると、プロンプトが表示されました。
--- ansible-navigator: execution-environment: image: localhost/ansible-execution-env pull: policy: never mode: stdout enable-prompts: true

enable-promptsをtrueにする時点でmode: stdoutになるので、enable-promptsを定義するだけでもよさそうです。
試しにmode: intaractiveにしてみましたがstdoutで出力されました。
注意点
enable-promptsを有効にすると、artifactsの生成ができなくなるようです。
最後に
step実行が停止しちゃう問題に2回はまったので書きました。
書き終わってから気づきましたが、すでにきんぎょさんによってブログが書かれていました笑 tekunabe.hatenablog.jp
まずはググれ。今回の教訓です。