为什么Ansible忽略Ansible\u成为\u密码变量?

为什么Ansible忽略Ansible\u成为\u密码变量?,ansible,sudo,ansible-playbook,Ansible,Sudo,Ansible Playbook,我正在通过与Ansible的本地连接设置VM。某些任务需要su权限(通过sudo授予) 我不能使用--ask-been-password开关,因为我希望资源调配完全自动化 这是我的剧本剧本。yml: --- - hosts: all gather_facts: yes roles: - role1 以下是roles/role1/tasks/main.yml: --- - name: Update apt-get cache (apt-get update)

我正在通过与Ansible的本地连接设置VM。某些任务需要su权限(通过sudo授予)

我不能使用--ask-been-password开关,因为我希望资源调配完全自动化

这是我的剧本剧本。yml:

---
  - hosts: all
    gather_facts: yes
    roles:
      - role1
以下是roles/role1/tasks/main.yml:

---
  - name: Update apt-get cache (apt-get update)
    become: true
    apt: update_cache=yes
我的库存:

localhost
最后,host_vars/localhost.yml:

---
ansible_connection: local
ansible_become_pass: user
使用运行playbook时出现以下错误:
ansible playbook-I inventory play.yml-vvv

<localhost> REMOTE_MODULE apt update_cache=yes
<localhost> EXEC ['/bin/sh', '-c', 'mkdir -p /tmp/ansible-tmp-1448910759.16-277915614747763 && chmod a+rx /tmp/ansible-tmp-1448910759.16-277915614747763 && echo /tmp/ansible-tmp-1448910759.16-277915614747763']
<localhost> PUT /tmp/tmpKuhTO2 TO /tmp/ansible-tmp-1448910759.16-277915614747763/apt
<localhost> EXEC ['/bin/sh', '-c', u'chmod a+r /tmp/ansible-tmp-1448910759.16-277915614747763/apt']
<localhost> EXEC /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=ilkbtrjkxxznhmgwvdaglfojzolhhfhz] password: " -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-ilkbtrjkxxznhmgwvdaglfojzolhhfhz; LANG=C LC_CTYPE=C /usr/bin/python /tmp/ansible-tmp-1448910759.16-277915614747763/apt'"'"''
<localhost> EXEC /bin/sh -c 'sudo -k && sudo -H -S -p "[sudo via ansible, key=stcxercjkjtxgyzjewlffytjjwcwidip] password: " -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-stcxercjkjtxgyzjewlffytjjwcwidip; LANG=C LC_CTYPE=C /usr/bin/python /home/user/.ansible/tmp/ansible-tmp-1449081640.46-119933765060267/apt; rm -rf /home/user/.ansible/tmp/ansible-tmp-1449081640.46-119933765060267/ >/dev/null 2>&1'"'"''
failed: [localhost] => {"failed": true, "parsed": false}
[sudo via ansible, key=stcxercjkjtxgyzjewlffytjjwcwidip] password:
远程\u模块apt更新\u缓存=是
EXEC['/bin/sh','-c','mkdir-p/tmp/ansible-tmp-1448910759.16-2779156147763&&chmod a+rx/tmp/ansible-tmp-1448910759.16-2779156147763&&echo/tmp/ansible-tmp-1448910759.16-2779156147763']
将/tmp/tmpKuhTO2置于/tmp/ansible-tmp-1448910759.16-2779156147763/apt
EXEC['/bin/sh','-c',u'chmod a+r/tmp/ansible-tmp-1448910759.16-2779156147763/apt']
EXEC/bin/sh-c'sudo-k&&sudo-H-S-p“[sudo via ansible,key=ilkbtrjkxxznhmgwdalgfojzolhhhfhz]密码:“-u root/bin/sh-c'”””’回音成为成功ilkbtrjkxxznhmgwdalgfojzolhhhfhz;LANG=C LC_CTYPE=C/usr/bin/python/tmp/ansible-tmp-1448910759.16-2779156147763/apt''
EXEC/bin/sh-c'sudo-k&&sudo-H-S-p“[sudo-via-ansible,key=stcxerjkjtxgyzjewlffytjjwcwidip]密码:“-u root/bin/sh-c'”””’echo成为成功的stcxerjkjtxgyzjewlffytjjwcwidip;LANG=C LC_CTYPE=C/usr/bin/python/home/user/.ansible/tmp/ansible-tmp-1449081640.46-119933765060267/apt;rm-rf/home/user/.ansible/tmp/ansible-tmp-1449081640.46-119933765060267/>/dev/null 2>&1''
失败:[localhost]=>{“失败”:true,“已解析”:false}
[sudo via ansible,key=stcxercjkjtxgyzjewlffytjjwcwidip]密码:
为什么本地主机的ansible\u变为\u密码被忽略

我注意到Ansible详细输出中没有报告密码,但我不知道这是否是默认行为

Ansible 1.9.4,Ubuntu服务器15.10上的默认Ansible.cfg

编辑:更新剧本(删除
ansible\u成为用户
变量)并输出


如果我使用
——ask been password
开关运行该剧,它就会正常运行。
ansible\u been\u user
su
非常相似

如果该用户没有在没有进一步权限提升的情况下执行任务的权限,则该任务将失败

如果删除您的
ansible\u been\u user
行,它将默认为root,然后该行将可以执行任何操作。

表示使用
ansible\u been\u pass
,而不是
ansible\u been\u password

安斯比成为 相当于ansible_sudo或ansible_su,允许强制提升权限

ansible_变_方法 允许设置权限升级方法

ansible_成为_用户 相当于ansible_sudo_用户或ansible_su_用户,允许通过权限提升设置您成为的用户

安斯比成为通行证 相当于ansible_sudo_pass或ansible_su_pass,允许您设置权限提升密码


ansible_Been_password是ansible_Been_pass的别名,请看那些文档有点模糊。。“ansible\u been\u pass=False”将阻止ansible发送空白密码。。。如果用户在控制盘组中具有NOPASSWD:ALL,则您不希望看到。如果用户需要sudo,则它没有正确的权限,而是需要升级(sudo就是这样做的)。您无法在Ansible中链接权限提升(据我所知),因此您可以使用
Ansible\u been\u user
将权限提升给具有适当权限的用户(例如root用户或任何其他具有您尝试执行的操作的权限的用户),或者完全删除权限提升,使其默认为root。谢谢。我尝试删除了
ansible\u been\u user
,但它不起作用