はじめに
こちらの記事で紹介した方法で、ホスト側に カスタム venv を作って ansible をインストールし、awx_task
コンテナにマウントさせてジョブテンプレートを実行したとろころ、以下のようなエラーが発生しました。
- 環境
- AWX 15.0
エラー詳細
エラー全文は以下の通り。
Traceback (most recent call last): File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/awx/main/tasks.py", line 1501, in run res = ansible_runner.interface.run(**params) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/ansible_runner/interface.py", line 178, in run r.run() File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/ansible_runner/runner.py", line 179, in run use_poll=self.config.pexpect_use_poll, File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/pexpect/pty_spawn.py", line 204, in __init__ self._spawn(command, args, preexec_fn, dimensions) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/pexpect/pty_spawn.py", line 303, in _spawn cwd=self.cwd, **kwargs) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/pexpect/pty_spawn.py", line 314, in _spawnpty return ptyprocess.PtyProcess.spawn(args, **kwargs) File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/ptyprocess/ptyprocess.py", line 330, in spawn raise exception OSError: [Errno 2] No such file or directory: b'/opt/my-envs/a210/bin/ansible-playbook'
/opt/my-envs/a210
が作成したvenvです。
調査
エラーによると、/opt/my-envs/a210/bin/ansible-playbook
がないとのことですが、awx_task` コンテナの中に入って調べてみるとちゃんとある状態でした。
そこで、awx_task
コンテナで /opt/my-envs/a210/bin/ansible-playbook --version
を実行してみました。
bash-4.4# /opt/my-envs/a210/bin/ansible-playbook --version bash: /opt/my-envs/a210/bin/ansible-playbook: /opt/my-envs/a210/bin/python3: bad interpreter: No such file or directory
どうやら、Python インタープリター /opt/my-envs/a210/bin/python3
がないようです。
対処
詳細は分からないですが、venv を作るときのちょっとした手違いかなにかかと思い、再度ホスト側で venv を作成しなおしたら、エラーはなくなり正常に実行できました。
ansible-playbook コマンドがないというエラーのときは、python インタープリター の有無もあわせて調べてみると良いかも知れません。