Для теста я установил очень просто Бродяга файл. Это просто проверить, как работать с Ansible является. К сожалению, я застрял на шаге 2 из-за следующей ошибки во время vagrant up --provision
(что я могу повторить на reload
):
Исполняемый файл
'ansible-playbook'
Vagrant, который пытается запустить, не найден в переменной PATH. Это ошибка. Убедитесь, что это программное обеспечение установлено и находится в пути.
Как Ubuntu 14 "Trusty", 64-разрядная версия коробка поставляется без Ansible установлен, я добавил сценарий быстрой оболочки для запуска в качестве инициатора перед фактическим Ansible учебники. Вот 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-playbook
и which ansible
. Доступны оба:
$ 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.