Я пытаюсь запустить playbook из virtualenv и использую скрипт динамической инвентаризации.Проблема в том, что сценарий инвентаризации использует системный интерпретатор по умолчанию, а не тот, который я передал, используя переменную ansible_python_interpreter.
Playbook работает нормально, если активировать virtualenv и запустить из командной строки.Кроме того, скрипт инвентаризации работает нормально, когда я использую /opt/myproj/.ve/bin/python3.6 inv.py
.Но playbook вызывается удаленно другим скриптом python, а не из командной строки.
/opt/myproj/.ve/bin/ansible-playbook playbooks/rotate_passwords.yml -i inv.py -e ansible_python_interpreter=/opt/myproj/.ve/bin/python3.6 -vvv
ansible-playbook 2.7.10
config file = /opt/myproj/ansible.cfg
configured module search path = ['/opt/myproj/library']
ansible python module location = /opt/myproj/.ve/lib64/python3.6/site-packages/ansible
executable location = /opt/myproj/.ve/bin/ansible-playbook
python version = 3.6.8 (default, Apr 25 2019, 21:02:35) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
Using /opt/myproj/ansible.cfg as config file
setting up inventory plugins
/opt/myproj/inv.py did not meet host_list requirements, check plugin documentation if this is unexpected
/opt/myproj/inv.py did not meet yaml requirements, check plugin documentation if this is unexpected
/opt/myproj/inv.py did not meet auto requirements, check plugin documentation if this is unexpected
[WARNING]: * Failed to parse /opt/myproj/inv.py with script plugin: Inventory script (/opt/myproj/inv.py) had an execution error: Traceback (most recent call last):
File "/opt/myproj/inv.py", line 11, in <module> import pymysql.cursors ModuleNotFoundError: No module named 'pymysql'
Я ожидаю, что inv.py должен вызываться с заданным ansible_python_interpreter, где я установил все модули pip.