Я хотел бы воспроизвести поведение моего старого скрипта Fabric1, работающего
sudo('useradd -m -u --groups mygroup myuser')
В этом случае удаленный компьютер (экземпляр Ubuntu AWS) запросит у меня пароль sudo, и я смог его ввести. Даже повторный запрос после неправильного ввода будет работать. После этого Fabric1 будет удерживать этот пароль, оставляя соединение открытым.
В моем новом скрипте Fabric 2.x, который я использую в @ task
c.sudo('useradd -m -u --groups mygroup myuser')
Я все еще получаю приглашение пользователя, но оно не ждет моего ответа, я не могу набрать пароль, и он не работает, как ожидалось, с
invoke.exceptions.AuthFailure: The password submitted to prompt '[sudo] password: ' was rejected
Использование аргумента --prompt-for-sudo-password имеет тот же (или не влияет).
Я тоже пытался
run('sudo useradd -m -u --groups mygroup myuser')
и получил
sudo: no tty present and no askpass program specified
Я бы предпочел не устанавливать программу askpass на машине, которая прекрасно работала без использования Fabric 1.x (если, конечно, я не мог бы сделать это из моего скрипта, который потребовал бы sudo).
Я бился головой о стену, пытаясь использовать сложную и недостаточно документированную систему конфигурации, но безуспешно.
Что мне не хватает? Если требуется дополнительная конфигурация, я хотел бы знать синтаксис файла конфигурации, а также где разместить этот файл, чтобы он был выбран командой fab CLI.