Próbuję użyć ansible, ale wydaje się, że nie jestem w stanie zmusić go do pracy z sudo. Zminimalizowałem problem do tego:
To nie działa:
ansible localhost --ask-become-pass -m shell -a "cat /var/log/syslog"
Daje to wyjście: wpisuję hasło, a następnie błędy.
SUDO password:
localhost | FAILED | rc=1 >>
cat: /var/log/syslog: Permission denied
Te działają dobrze:
ssh -t localhost sudo cat /var/log/syslog #without ansible
ansible localhost -m shell -a "ls" #without sudo
Inne diagnostyki:
#expecting last line to be `root`
ansible localhost --become-user=root --ask-become-pass -m shell -a "whoami"
daje ten wynik, gdy zostanie wprowadzone poprawne hasło.
SUDO password:
localhost | SUCCESS | rc=0 >>
richard
--become-user=root
, nie pomogło (bez zmian). A instrukcja mówi, że domyślnie rootuje.Wydaje się, że
--ask-become-pass
to nie wystarczy, potrzebujesz również--become
parametrów. Dlatego komenda jest:ansible localhost --become --ask-become-pass -m shell -a "cat /var/log/syslog"
.Zauważyłem również, że nie potrzebuję
--ask-become-pass
, myślę, że hasło jest buforowane, podobnie jaksudo
robi.źródło