如何通过Ansible触发sudo密码提示?无需--ask-sudo-pass自动触发方法
如何让Ansible触发sudo密码输入提示?
我来给你梳理两种实用的解决办法,包括常规触发和无需手动加参数的自动触发方式:
一、常规触发:命令行加参数直接提示
最简单的方式就是在运行Ansible命令时,加上对应的参数:
- 旧版Ansible用
--ask-sudo-pass(对应sudo模块),新版建议用更通用的--ask-become-pass(因为become支持切换到任意授权用户,不止sudo) - 嫌输入长参数麻烦的话,也可以用简写的
-K参数,效果完全一样
举个实际运行playbook的例子:
# 新版标准写法 ansible-playbook your_playbook.yml --ask-become-pass # 快捷简写版 ansible-playbook your_playbook.yml -K
执行命令后,终端就会立刻弹出提示,让你输入sudo密码。
二、无需指定参数:修改配置实现自动提示
如果你不想每次运行命令都手动加参数,可以参考Ansible项目Issue #7742里的方案,通过修改配置文件让Ansible自动触发密码提示:
- 找到Ansible的配置文件:
- 全局配置一般在
/etc/ansible/ansible.cfg - 也可以在当前项目目录下创建
ansible.cfg(项目级配置优先级更高,不会影响全局环境)
- 全局配置一般在
- 在配置文件里找到
[privilege_escalation]段落(如果没有就自行添加),加入一行配置:
become_ask_pass = True
保存配置后,只要你的playbook里用到了become: yes(或者旧版的sudo: yes),下次运行Ansible命令时,就会自动弹出sudo密码输入提示,再也不用手动加-K或者--ask-become-pass参数了。
不过要注意,这个配置是生效在对应范围的(全局或当前项目),如果只是偶尔需要自动提示,还是用命令行参数更灵活;长期需要的话,修改配置会省不少事。
内容的提问来源于stack exchange,提问作者G. Roggemans
相关产品推荐
相关产品推荐

