这个问题在这里已有答案:
我目前正在使用ansible,我想自动转储我的远程数据库并将转储的文件导入到我的本地数据库 . 现在,我遇到了使用 sudo 来切换用户的一些问题 .
playbook.yml
---
- hosts: remoteserver
vars:
remote_db_name: dbname
remote_filename: dbname_{{ lookup('pipe', 'date +%m-%d-%Y') }}
local_folder: /home/alde/database_backups/
tasks:
- name: Dump database
become: yes
become_user: postgres
shell: pg_dump -d {{remote_db_name}} > "{{remote_filename}}"
当我尝试运行 ansible-playbook playbook.yml 时,它返回: "sudo: a password is required"
What I have tried so far.
1)我通过添加sudo_flags尝试了this solution .
ansible.cfg
[defaults]
sudo_flags = -H -S
然后当我执行我的剧本时出现了不同的错误: "Timeout (12s) waiting for privilege escalation prompt: "
2)我将 timeout 增加到30 .
3)我将默认远程用户添加到sudoers文件
当我尝试使用ssh访问我的远程服务器并使用sudo su - postgres从default_user切换到postgres时's strange because there'没有密码提示
-
ansible 2.3.0.0
-
Python 2.7
-
Ubuntu 14.04
2 回答
尝试在主机下添加root用户 .
您可以尝试将该行添加到
sudoer file
(sudo visudo)<ssh user> ALL=(ALL) NOPASSWD:ALL
并测试它,也许有些问题 .链接词汇表说:
所以我认为尝试-n标志至少会改变一些东西,因为你似乎已经将它改为 waiting on authentication 而不是 there is no authentication 与你的最后修改 .