スーパーユーザーansibleが実行するアクションを操作しながら、Vagrantのプロバイダーを介してAnsibleを使用するにはどうすればよいbecomeですか?これまでに試みたすべての試みは、まったく説明できない理由で機能しません。
このシナリオでは、aptアクションに注釈を付けbecomeて、適切な権限を付与しています。でトリガされAnsible呼び出し、vagrant provision、経由でSSHingされるvagrant(ベイグラントは現在経由して、デフォルトで強制ユーザーansibleプロバイダ)、パスワードなしたユーザーsudo2つのベースボックスに、デフォルトでは、私が試してみた:ubuntu/trusty64とdebian/stretch64。
基礎となるVMでパスワードなしの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/ vagrantを使用するため、Vagrantfileを更新してsudoパスワードを明示的に要求します。
config.vm.provision "ansible" do |ansible|
ansible.playbook = 'main.yml'
ansible.ask_become_pass = true
パスワードを求めるプロンプト:
default: Running ansible-playbook...
SUDO password:
ただし、VMの入力に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、まったく無関係な理由で失敗します。したがって、sudoを使用したSSHを介したVagrantとAnsibleの相互作用に特に関係があるようです。
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
Vagrantのプロビジョニングツールを使用する現在の推奨される信頼できる方法は何ですか?ありがとう。ansiblebecome