В вашем случае, я считаю, become_method
должно быть по умолчанию sudo
. Вы пытались использовать это? Если так, каков результат? Можете ли вы скопировать / вставить результат здесь?
Кроме того, вы можете попробовать выполнить специальную команду для хоста и опубликовать результат здесь?
Примерно так: ansible -i inventory.ini -u A --become --become-user B -m ping myhost
И еще одна вещь: обратите внимание, что некоторые ограничения при использовании become
для переключения на непривилегированного пользователя:
"В дополнение к дополнительным средствамДелая это безопасно, Ansible 2.1 также затрудняет неосознанно делать это небезопасно, тогда как в Ansible 2.0.x и ниже Ansible будет молча разрешать небезопасное поведение, если ему не удалось найти другой способ поделиться файлами с непривилегированным пользователем, вAnsible 2.1 и выше Ansible по умолчанию выдает ошибку, если не может сделать это безопасно. Если вы не можете внести какие-либо изменения выше для решения проблемы, и вы решаете, что машина, на которой вы работаете, является достаточно безопасной длячтобы модули, которые вы хотите запустить, были доступны для чтения всем, вы можете включить allow_world_readable_tmpfiles в файле ansible.cfg. readable_tmpfiles изменит это из ошибки в предупреждение и позволит заданию запускаться так, как это было до версии 2.1. по крайней мере sudo su -
. Они будут правильно заполнять окружающую среду, в отличие от sudo su
. Чтобы узнать, почему вы этого хотите, см. здесь .