提出问题
使用 ansible 创建用户、复制文件等命令时,需要使用 sudo 提权,但在Ubuntu系统中,默认禁用 root 用户,只能使用普通用户。但是当前连接远程主机的普通用户,执行 sudo 需要输入密码,Ansible 没拿到这个 sudo 密码,提权失败。
分析
将Ubuntu系统中的普通用户,配置 sudo 免密
解决
假设 被控机 的用户是 user,主控机通过ansible使用 user 用户连接 被控机
用 user 用户登录到 被控机
执行下面命令编辑 sudoers:
sudo visudo
在文件最下面,添加下面内容:
user ALL=(ALL) NOPASSWD: ALL
如下图:
按 ctrl+o ,然后敲回车,写入文件
按 ctrl+x 退出编辑
测试配置是否成功
清空之前的缓存密码:
sudo -k
执行下面命令:
sudo whoami
没提示输入密码,且打印 root,说明配置成功
