Ansible剧本:需要sudo密码

时间:2017-05-12 02:53:33

标签: python ansible ansible-2.x

我目前正在使用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:需要密码"

enter image description here

到目前为止我尝试了什么。

1)我通过添加sudo_flags尝试this solution

ansible.cfg

[defaults]
sudo_flags = -H -S

然后当我执行我的playbook时出现了不同的错误: "超时(12秒)等待权限提升提示:"

enter image description here

2)我将 超时 增加到30。

3)我将默认远程用户添加到sudoers文件

这很奇怪,因为当我尝试使用ssh访问我的远程服务器并使用 sudo su - postgres

从default_user切换到postgres时,没有密码提示
  • ansible 2.3.0.0
  • Python 2.7
  • Ubuntu 14.04

1 个答案:

答案 0 :(得分:0)

链接词汇表说:

  

默认为'-H -S -n',它设置HOME环境变量,通过STDIN提示输入密码,并避免提示用户输入任何类型的密码。请注意,' - n'将与使用无密码sudo身份验证冲突,例如pam_ssh_agent_auth。在某些情况下,您可能希望添加或删除标记,但通常大多数用户不需要更改此设置::

所以我认为尝试-n标志至少会改变一些东西,因为你似乎已经将它改为等待身份验证而不是没有身份验证上次修改。