Я предоставляю виртуальную машину через локальное соединение с Ansible. Для некоторых задач требуются привилегии su (предоставляются через sudo).Почему Ansible игнорирует переменную ansible_become_password?
Я не могу использовать переключатель -ask-get-password, поскольку я хочу, чтобы предоставление было полностью автоматизировано.
Вот мой сборник пьес play.yml:
---
- hosts: all
gather_facts: yes
roles:
- role1
Вот роли/Role1/задачи/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
я получаю следующее сообщение об ошибке при выполнении пьес с: ansible-playbook -i inventory play.yml -vvvv
<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:
Почему ansible_become_password для локального хоста игнорируется?
Я заметил, что пароль не сообщается в Ansible verbose output, но я не знаю, является ли это поведением по умолчанию.
Ansible 1.9.4, по умолчанию ansible.cfg на сервере Ubuntu 15.10.
EDIT: обновленные игровые автоматы (удалены ansible_become_user
переменная) и вывод.
воспроизведение работает, если я запустил его с помощью переключателя --ask-become-password
.
'пользователь' имеет привилегии пользователя. Он может sudo из командной строки –
Если пользователю нужно sudo, то он не имеет правильных привилегий и вместо этого нуждается в эскалации (это то, что делает sudo). Вы не можете связать эскалацию привилегий (насколько мне известно) в Ansible, чтобы либо использовать 'ansible_become_user' для правильно привилегированного пользователя (например, root или любого другого пользователя с правильными привилегиями для операции, которую вы пытаетесь сделать) или удалить он полностью должен иметь значение по умолчанию для root. – ydaetskcoR
Спасибо. Я попытался удалить 'ansible_become_user', но он не работает –