Как можно использовать Ansible через ansible провайдера Vagrant при работе с действиями, которые become суперпользователем? Каждая попытка, которую я сделал до сих пор, не работает по совершенно необъяснимым причинам.

Сценарий аннотирует apt действие с become чтобы дать ему правильные разрешения. Анзибль вызов, который инициируется с vagrant provision является SSHing в через vagrant пользователь (который Vagrant в настоящее время обеспечивает соблюдение по умолчанию через ansible провайдера), пользователь , который имеет беспарольную sudo по умолчанию на два базовых коробках , которые я пробовал: ubuntu/trusty64 и debian/stretch64 .

Несмотря на то, что sudo без пароля, очевидно, поддерживается на базовой виртуальной машине, это не работает и выдает следующую ошибку:

fatal: [default]: FAILED! => {"changed": false, "module_stderr": "sudo: a password is required\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}  

Как Бродячие коробки использовать vagrant/vagrant для имени пользователя и пароля на коробках по умолчанию, я затем обновить Vagrantfile попросить SUDO пароля в явном виде:

config.vm.provision "ansible" do |ansible|
  ansible.playbook = 'main.yml'
  ansible.ask_become_pass = true

Который запрашивает пароль:

   default: Running ansible-playbook...
SUDO password:

Тем не менее, после ввода vagrant он все равно не работает, хотя я могу использовать vagrant ssh для входа в виртуальную машину и подтверждения правильности пароля:

fatal: [default]: FAILED! => {"changed": false, "module_stderr": "Sorry, try again.\n[sudo via ansible, key=XXXXXXXXXXXXXXXXXXX] password: \nsudo: 1 incorrect password attempt\n", "module_stdout": "", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 1}

Интересно, что провайдер ansible_local отлично работает для коробки ubuntu/trusty64 но завершается неудачно с debian/stretch64 по совершенно не связанным с этим причинам. Так что, похоже, это определенно связано с взаимодействием Vagrant и Ansible по SSH с sudo.

Информация о моих установках Vagrant и Ansible:

$ ansible --version
ansible 2.7.1
  config file = None
  configured module search path = ['/Users/XXXXXX/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']                                                                                   
  ansible python module location = /usr/local/lib/python3.7/site-packages/ansible
  executable location = /usr/local/bin/ansible
  python version = 3.7.1 (default, Nov  6 2018, 18:46:03) [Clang 10.0.0 (clang-1000.11.45.5)]
$ vagrant --version
Vagrant 2.2.2

Каков в настоящее время рекомендуется надежным способ использования ansible Provisioner бродячего с become Благодарю.

0