Как можно использовать 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
Благодарю.