Vagrant + Ansible + Python3
Vagrant + Ansible + Python3
我有一个 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
。
我看到几篇关于此的旧帖子。似乎最近版本的 Ansible 支持使用 Python 3,但它必须通过主机文件中的 ansible_python_interpreter=/usr/bin/python3
或在 ansible 命令行上进行配置。有没有什么方法可以在我的 Vagrantfile
或 playbook.yml
文件中指定此选项?我目前没有使用主机文件,我没有通过命令行 运行ning ansible-playbook
,我通过 Vagrant 集成 运行ning Ansible。
仅供参考,我使用的是 Ansible 2.4.1.0 和 Vagrant 2.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"
}
}
我有一个 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
。
我看到几篇关于此的旧帖子。似乎最近版本的 Ansible 支持使用 Python 3,但它必须通过主机文件中的 ansible_python_interpreter=/usr/bin/python3
或在 ansible 命令行上进行配置。有没有什么方法可以在我的 Vagrantfile
或 playbook.yml
文件中指定此选项?我目前没有使用主机文件,我没有通过命令行 运行ning ansible-playbook
,我通过 Vagrant 集成 运行ning Ansible。
仅供参考,我使用的是 Ansible 2.4.1.0 和 Vagrant 2.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"
}
}