次のように簡略化されたVagrantfile
があります。
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.boot_timeout = 900
config.vm.define 'srv' do |srv|
srv.vm.provision 'ansible' do |ansible|
ansible.compatibility_mode = '2.0'
ansible.playbook = 'playbook.yml'
end
end
end
vagrant provision
を実行すると、Gathering Facts
ステージで/usr/bin/python: not found
が得られます。これは、Ubuntu16.04にはデフォルトでpython3
しかなくPython 2。 x python
がインストールされました。
私はこれについていくつかの古い投稿を見ます。 Python 3を使用したAnsibleサポートの最近のバージョンのようですが、hostsファイルまたはansibleコマンドラインでansible_python_interpreter=/usr/bin/python3
を介して構成する必要があります。このオプションを指定する方法はありますかVagrantfile
またはplaybook.yml
ファイルで?現在hostsファイルを使用しておらず、コマンドラインでansible-playbook
を実行しておらず、VagrantでAnsibleを実行しています統合。
参考までに、この記事の執筆時点で最新バージョンであるAnsible2.4.1.0とVagrant2.0.1を使用しています。
私の知る限り、Vagrantファイルで使用できますextra_vars
必ずansibleスコープ内に配置してください。
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/xenial64"
config.vm.boot_timeout = 900
config.vm.define 'srv' do |srv|
srv.vm.provision 'ansible' do |ansible|
ansible.compatibility_mode = '2.0'
ansible.playbook = 'playbook.yml'
ansible.extra_vars = { ansible_python_interpreter:"/usr/bin/python2" }
end
end
end
上記のブロックでは、extra_vars
はansible_python_interpreter
で設定されています。または、次のようにHost_vars
を使用できます。
ansible.Host_vars = {
"default" => {
"ansible_python_interpreter" => "/usr/bin/python2.7"
}
}