【发布时间】:2015-01-26 06:31:13
【问题描述】:
我创建了一个 Vagrantfile 来使用 Ansible 配置一个新盒子。 Vagrantfile 和 Ansible 剧本都是我以前使用过的,在升级到 OS X Yosemite 之前。我可以成功vagrant up,但是当我尝试vagrant provision 时,出现以下错误:
➜ NNL vagrant provision
==> default: Running provisioner: ansible...
The executable 'ansible-playbook' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.
更新 2:这是上述命令的详细 (vvvv) 输出:
➜ ta vagrant provision
==> default: Running provisioner: ansible...
ANSIBLE_FORCE_COLOR=true ANSIBLE_HOST_KEY_CHECKING=false PYTHONUNBUFFERED=1 ANSIBLE_SSH_ARGS='-o
ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --private-
key=/Users/mike/.vagrant.d/insecure_private_key --user=vagrant --connection=ssh --
limit='default' --inventory-file=/Users/mike/Desktop/ta/.vagrant/provisioners/ansible/inventory
-vvvv vagrant.yml
The executable 'ansible-playbook' Vagrant is trying to run was not
found in the PATH variable. This is an error. Please verify
this software is installed and on the path.
作为故障排除的一部分,我已经更新了 ansible 和 vagrant:
➜ NNL ansible --version
ansible 1.8.1
configured module search path = None
➜ NNL ansible-playbook --version
ansible-playbook 1.8.1
configured module search path = None
➜ NNL vagrant --version
Vagrant 1.6.5
Ansible 肯定已安装,并且 /usr/local/bin 位于 PATH 环境变量中。
➜ NNL which ansible
/usr/local/bin/ansible
➜ NNL echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
更新 1:这是我的 Vagrantfile,我已将其缩减到最低限度:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "precise64"
config.vm.hostname = "NNL"
config.vm.box_url = "http://files.vagrantup.com/precise64.box"
config.vm.network :forwarded_port, guest: 80, host: 8080
config.vm.network :forwarded_port, guest: 3000, host: 3000
config.vm.network :forwarded_port, guest: 9200, host: 9200
config.ssh.forward_agent = true
config.vm.provision "ansible" do |ansible|
ansible.playbook = "vagrant.yml"
end
end
我的另一个想法是我正在使用 zsh,也许 vagrant 正在通过 bash 或其他一些 shell 执行命令,所以我还尝试添加一个 .bashrc 文件以确保 /usr/local/bin 在路径上那个壳也是。似乎是,但我仍然得到同样的错误:
➜ NNL bash
bash-3.2$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin
bash-3.2$ which ansible
/usr/local/bin/ansible
我现在不知道如何进行。作为脚注,当我尝试重新配置它们时,我在 Mavericks 下成功创建的其他 vagrant box 现在也因相同的错误而失败。
【问题讨论】:
-
我不知道它是否有帮助,但你能发布你的 Vagrantfile 吗?
-
当然,添加到上面的问题中。
-
在
ansible.playbook设置下方添加ansible.verbose = "vvvv",这样我们就可以获得vagrant 尝试运行的完整命令 -
@codeaken 按要求完成,请参阅更新 2