2014-11-27 2 views
4

Я создал Vagrantfile для создания нового окна с использованием Ansible. Как Vagrantfile, так и Ansible playbooks - это те, которые я использовал раньше, до перехода на OS X Yosemite. Я могу успешно vagrant up, но когда я пытаюсь vagrant provision я получаю следующее сообщение об ошибке:Vagrant не может быть запущен при настройке

➜ 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.  

Update 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. 

Я уже обновлено и доступно для устранения неполадок в качестве части моего устранения неполадок:

➜ 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 

Update 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 

Моя другая мысль была, что я использую ЗШ и, возможно, бродяга выполняет команды через bash или некоторую другую оболочку, поэтому я также попытался добавить файл .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, теперь также терпят неудачу с той же ошибкой, когда я пытаюсь их повторно предоставить.

+0

Я не знаю, поможет ли это, но можете ли вы опубликовать свой Vagrantfile? – tedder42

+0

Уверенная вещь, добавленная к вопросу выше. – Teep

+0

Добавьте 'ansible.verbose =" vvvv "' под 'ansible.playbook', чтобы мы могли получить полную команду, бродяга пытается запустить – codeaken

ответ

0

Итак, наконец, я исправил проблему. Оказывается, обновление iTerm (до iTerm 2, июнь 2014 года) было необходимо. Я не совсем понимаю, что вызывает проблему, но здесь есть дополнительная информация: https://github.com/Homebrew/homebrew/issues/29843

0

Я не использовал Yosemite до сих пор, но если я понимаю, хорошо ваш же установка работала нормально на предыдущей версии OS X.

Во-первых, чтобы собрать немного больше информации: когда бродяга окно вверх, могли бы вы повторно запустить команду анзибль-PlayBook, который отображается в бродячими бревен, а непосредственно из оболочки (баш или Zsh не имеет значения):

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 

Каков результат?

Если он работает нормально (что я ожидаю, исходя из вашего описания проблемы), то мы уверены, что мы должны преследовать что-то в внутренних частях Vagrant (возможно, в сочетании с окружающей средой Йосемити).

+0

Если я запустил команду playbook из командной строки (с действительно простой игрой для установки git через apt), тогда все работает правильно, без сообщений об ошибках. Я думаю, что есть проблема с оболочкой, в которой работает Vagrant, или что-то в этом роде, но мои знания не удается ... – Teep

+0

Спасибо за это подтверждение. Vagrant 1.7.0 только что выпущен сегодня. Не могли бы вы попросить его проверить, сохраняется ли эта проблема с этой новой версией Vagrant? Спасибо :) –

+0

Спасибо @gilles Я дам ему пойти – Teep

0

Нет необходимости устанавливать Ansible внутри коробки Vagrant. Ansible не является агентом. Ansible использует SSH (или другие протоколы) для подключения к другим хостам. Поэтому нет необходимости иметь исполняемый файл Ansible внутри гостя. Вам просто нужно установить Ansible на хост, работающий с бродягой.

Смежные вопросы