如何绕过Ansible本地执行Playbook时的sudo密码错误?
解决Ansible挂载NFS时的sudo密码错误问题
我在控制节点用低权限的ansible用户运行Ansible Playbook,需要挂载NFS共享,代码如下:
- hosts: localhost connection: local vars: FLSYSTEM: 'abc.xyz.com:/folder1' MOUNTPOINT: '/folder1' become: yes gather_facts: no tasks: - name: mount share mount: src: '{{ FLSYSTEM }}' path: '{{ MOUNTPOINT }}' fstype: nfs opts: rw,sync state: mounted
运行后遇到错误:
fatal: [localhost]: FAILED! => { "msg": "error occurred on host : sudo password is incorrect"
给你几个可行的解决办法:
配置免sudo权限(推荐)
让低权限用户执行mount和umount命令时无需sudo密码:- 执行
sudo visudo编辑sudoers文件(别直接用vi编辑,避免语法错误锁死sudo) - 在文件末尾添加一行(把
ansible_user换成你的实际低权限用户名):ansible_user ALL=(ALL) NOPASSWD: /bin/mount, /bin/umount - 保存退出后,该用户再执行挂载操作就不会要求输入sudo密码了
- 执行
运行Playbook时手动输入密码
执行Playbook时加上--ask-become-pass参数,运行时会提示你输入sudo密码:ansible-playbook your_playbook.yml --ask-become-pass通过环境变量传递sudo密码
先设置环境变量存储sudo密码,再运行Playbook:export ANSIBLE_BECOME_PASS='你的sudo密码' ansible-playbook your_playbook.yml
内容的提问来源于stack exchange,提问作者AashkaTe
相关产品推荐
相关产品推荐

