Запуск необработанной команды, вызывающей yum
напрямую, отличается от модуля yum
в ansible. Первый просто использует стандартные механизмы вызова команд для выполнения yum
, в частности, без глубокого понимания намеченного результата и, следовательно, без идемпотентности (ansible не знает из этого, изменено ли действие / ok). Но последнее совершенно другое. Он реализован в ansible как python, который собирается и отправляется на удаленный клиент в виде исполняемого двоичного объекта.
версия Python = 2.7.5 (по умолчанию, 7 августа 2019 г., 00:51:29) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)]
Помните, что даже несмотря на то, что python на управляющем хосте собрал python, который он отправил целевому хосту, это не обязательно означает, что интерпретатор один и тот же. В вашем случае у контроллера вполне может быть ansisble + py 2.7, но это не значит, что у неисправного хоста по умолчанию есть py2.7 на конце. В прошлом Ansible нередко видел проблему, заключающуюся в том, что по какой-то причине неправильно подобранный переводчик;в этом случае вы можете установить ansible_python_interpreter
для каждого хоста / группы / другой области действия на правильный питон.
Хорошая новость в том, что, похоже, вы можете просто переключиться на модуль dnf
: https://docs.ansible.com/ansible/latest/modules/dnf_module.html. Попробуйте, поскольку Python 3 - это то, что у всех нас будетпроработать на этом этапе.