スーパーユーザーansible
が実行するアクションを操作しながら、Vagrantのプロバイダーを介してAnsibleを使用するにはどうすればよいbecome
ですか?これまでに試みたすべての試みは、まったく説明できない理由で機能しません。
このシナリオでは、apt
アクションに注釈を付けbecome
て、適切な権限を付与しています。でトリガされAnsible呼び出し、vagrant provision
、経由でSSHingされるvagrant
(ベイグラントは現在経由して、デフォルトで強制ユーザーansible
プロバイダ)、パスワードなしたユーザーsudo
2つのベースボックスに、デフォルトでは、私が試してみた: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のプロビジョニングツールを使用する現在の推奨される信頼できる方法は何ですか?ありがとう。ansible
become