Ansible не найден в PATH после установки на Vagrant box

Проблема

Для теста я установил очень простой 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

У меня здесь нет идей .

0
задан 15 December 2015 в 21:33
1 ответ

Я думаю, вы ошиблись. Нет необходимости устанавливать 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.

6
ответ дан 4 December 2019 в 11:16

Теги

Похожие вопросы