Macos 流浪汉可以';设置时无法运行ansible

Macos 流浪汉可以';设置时无法运行ansible,macos,vagrant,ansible,Macos,Vagrant,Ansible,我已经创建了一个Vagrantfile,使用Ansible设置了一个新的框。Vagrantfile和Ansible剧本都是我在升级到OS X Yosemite之前使用过的。我可以成功地vagrant up,但是当我尝试vagrant provision时,我得到以下错误: ➜ NNL vagrant provision ==> default: Running provisioner: ansible... The executable 'ansible-playbook' Vagra

我已经创建了一个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:以下是上述命令的详细(VVV)输出:

➜  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:这是我的Vagrant文件,我已将其缩减到最低限度:

# -*- 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也位于该shell的路径上。看起来是这样,但我仍然得到相同的错误:

➜  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

我现在不知道该怎么办。作为一个脚注,我在小牛队下成功创建的其他流浪者盒子现在在我尝试重新设置它们时也失败了

到目前为止,我还没有使用过优胜美地,但如果我理解的很好,您的相同设置在以前版本的OS X上运行得很好

首先收集更多信息:当vagrant框启动时,您是否可以重新运行在vagrant日志中显示的ansible playbook命令,但直接从shell运行(bash或zsh不重要):

结果如何


如果它运行良好(根据您的问题描述,我希望如此),那么我们肯定必须在飘忽不定的内部(可能与约塞米蒂环境相结合)中寻找一些东西。

因此,我最终解决了问题。事实证明,需要进行iTerm升级(至iTerm 2,2014年6月)。我不完全理解导致问题的原因,但这里有更多信息:

无需在Vagrant box中安装Ansible。Ansible是无代理的。Ansible使用SSH(或其他协议)连接到其他主机。因此,不需要在来宾机中具有Ansible可执行文件。您只需要在运行vagrant的主机上安装Ansible。

我不知道它是否有用,但您可以发布您的vagrant文件吗?当然可以,添加到上述问题。添加
Ansible.verbose=“vvv”
下面的
ansible.playbook
设置,这样我们就可以获得vagrant试图执行的完整命令run@codeaken按照要求完成,请参阅更新2如果我从命令行运行playbook命令(使用一个非常简单的playbook通过apt安装git),那么一切都正常工作,没有错误报告。我认为《流浪汉》的外壳有问题,但我的知识在这方面还不清楚……谢谢你的确认。流浪汉1.7.0今天刚刚发布。你能试试看这个新版本的流浪汉是否仍然存在这个问题吗?谢谢:)谢谢@gilles我会试试的
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