Для теста я установил очень простой Vagrant файл. Это просто для проверки того, как работает Ansible . К сожалению, я застрял на шаге 2 из-за следующей ошибки во время vagrant up --provision
(которую я могу повторить на reload
):
Исполняемый файл
'ansible- playbook '
Vagrant пытается запустить, не было К сожалению, я застрял на шаге 2 из-за следующей ошибки во время vagrant up --provision ...Проблема
Для теста я установил очень простой Vagrant файл. Это просто для проверки того, как работает Ansible . К сожалению, я застрял на шаге 2 из-за следующей ошибки во время
vagrant up --provision
(которую я могу повторить наreload
):Исполняемый файл
'ansible- playbook '
Vagrant пытается запустить, не было К сожалению, я застрял на шаге 2 из-за следующей ошибки во время vagrant up --provision ...Проблема
Для теста я установил очень простой Vagrant файл. Это просто для проверки того, как работает Ansible . К сожалению, я застрял на шаге 2 из-за следующей ошибки во время
vagrant up --provision
(которую я могу повторить наreload
):Исполняемый файл
'ansible- playbook '
Vagrant пытается запустить, не было находится в переменной PATH. Это ошибка. Пожалуйста, подтвердите это программное обеспечение установлено и находится в пути.
Усилия по отладке на данный момент
Поскольку пакет Ubuntu 14 "Trusty" 64bit поставляется без установленного Ansible , я добавил быстрый сценарий оболочки для запуска в качестве средства обеспечения перед фактическими Ansible playbooks. Вот
Vagrantfile
Vagrant.require_version ">= 1.7.0" Vagrant.configure("2") do |config| config.vm.box = "ubuntu/trusty64" config.ssh.insert_key = false # Synced folders config.vm.synced_folder "./public", "/var/www", disabled: false # Install Ansible config.vm.provision :shell, path: "provisioners/shell/install-ansible.sh" # Run Ansible Playbooks config.vm.provision "ansible" do |ansible| ansible.verbose = "vvv" ansible.playbook = "provisioners/ansible/playbook.yml" end end
Сценарий bash
install-ansible.sh
очень прост:sudo apt-get install software-properties-common sudo apt-add-repository ppa:ansible/ansible sudo apt-get -y update sudo apt-get install ansible
Чтобы подтвердить, что
ansible-playbook
иansible
, яvagrant ssh
вставил в ящик и вызвал, который доступен для воспроизведения
и, который недоступен
. Оба доступны:$ which ansible # /usr/bin/ansible
Посмотрев на
dpkg -L ansible
, я обнаружил, что много всего происходит в/ etc
и/ usr / bin
. Такжеpython --version
дает мнеPython 2.7.6
, в то время как минимально необходимая версия - 2.4.
echo $ PATH
дает следующий вывод по умолчанию:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Я могу подтвердить, что пользователь правильный:
whoami
приводит кvagrant
, и последняя команда, выполненная перед ошибкой, следующая:PYTHONUNBUFFERED=1 ANSIBLE_HOST_KEY_CHECKING=false ANSIBLE_FORCE_COLOR=true ANSIBLE_SSH_ARGS='-o UserKnownHostsFile=/dev/null -o IdentitiesOnly=yes -o ControlMaster=auto -o ControlPersist=60s' ansible-playbook --user=vagrant --connection=ssh --timeout=30 --limit='default' --inventory-file=/Users/*****/projects/*****/.vagrant/provisioners/ansible/inventory -vvv provisioners/ansible/playbook.yml
У меня здесь нет идей .
Я думаю, вы ошиблись. Нет необходимости устанавливать Ansible внутри коробки Vagrant. Ansible не имеет агентов. Ansible использует SSH (или другие протоколы) для подключения к другим хостам. Таким образом, нет необходимости иметь исполняемый файл Ansible внутри хоста.
Вам просто нужно, чтобы Ansible был установлен на хосте, на котором запущен vagrant.
Если вы хотите запускать Ansible внутри окна Vagrant (что такое IMHO, а не способ Vagrant и Ansible должны работать вместе) вам также нужно будет изменить шаг vm.provision
файла Vagrant. Поскольку vm.provision "ansible"
будет искать исполняемый файл Ansible на хосте, на котором вы запускаете vagrant
, вам следует перейти на vm.provision "shell"
и установить ansible-playbook
внутри сценария оболочки, который должен искать исполняемый файл Ansible в поле Vagrant.