2014-10-08 5 views
5

Я пытаюсь сделать некоторые бродяга/Ansible, но сталкивается с проблемами с самого начала. Вот мой Vagrantfile:Vagrant Несущественное обеспечение SSH ошибка

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 
    config.vm.box = "ubuntu/trusty64" 

    config.vm.network "private_network", ip: "192.168.6.66" 

    config.vm.provider "virtualbox" do |vb| 
    vb.customize ["modifyvm", :id, "--memory", "2048"] 
    end 

    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "site.yml" 
    end 
end 

site.yml просто

--- 
- name: Bring up server with MySQL, Nginx, and PHP-FPM 
    hosts: all 
    remote_user: root 

    roles: 
    - common 

и общие/задачи/main.yml является

--- 
- name: Update apt 
    apt: update_cache=yes 

При выполнении vagrant up, выход

Bringing machine 'default' up with 'virtualbox' provider... 
==> default: Importing base box 'ubuntu/trusty64'... 
==> default: Matching MAC address for NAT networking... 
==> default: Checking if box 'ubuntu/trusty64' is up to date... 
==> default: Setting the name of the VM: ansible-provision_default_1412793587231_72507 
==> default: Clearing any previously set forwarded ports... 
==> default: Fixed port collision for 22 => 2222. Now on port 2200. 
==> default: Clearing any previously set network interfaces... 
==> default: Preparing network interfaces based on configuration... 
    default: Adapter 1: nat 
    default: Adapter 2: hostonly 
==> default: Forwarding ports... 
    default: 22 => 2200 (adapter 1) 
==> default: Running 'pre-boot' VM customizations... 
==> default: Booting VM... 
==> default: Waiting for machine to boot. This may take a few minutes... 
    default: SSH address: 127.0.0.1:2200 
    default: SSH username: vagrant 
    default: SSH auth method: private key 
    default: Warning: Connection timeout. Retrying... 
==> default: Machine booted and ready! 
==> default: Checking for guest additions in VM... 
==> default: Checking for host entries 
==> default: Configuring and enabling network interfaces... 
==> default: Mounting shared folders... 
    default: /vagrant => /Users/bram/Projects/Brammm/ansible-provision 
==> default: Running provisioner: ansible... 

PLAY [Bring up server with MySQL, Nginx, and PHP-FPM] ************************* 

GATHERING FACTS *************************************************************** 
fatal: [default] => SSH encountered an unknown error during the connection. We recommend you re-run the command using -vvvv, which will enable SSH debugging output to help diagnose the issue 

TASK: [common | Update apt] *************************************************** 
FATAL: no hosts matched or all hosts have already failed -- aborting 


PLAY RECAP ******************************************************************** 
      to retry, use: --limit @/Users/bram/site.retry 

default     : ok=0 changed=0 unreachable=1 failed=0 

Ansible failed to complete successfully. Any error output should be 
visible above. Please fix these errors and try again. 

Если я смотрю в .vagrant/provisioners/анзибль/инвентарь/vagrant_ansible_inventory, я вижу следующее:

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200 

Я ожидаю, что IP там быть такой же, как указано в private_network? Я смотрел на это больше часа, я сделал что-то не так? У меня такое чувство, что IP не устанавливается должным образом или что-то в этом роде. Я могу ping 192.168.6.66.

+0

'Рекомендуем вам повторно запустить команду с помощью -vvvv, которая позволит выводить результаты отладки SSH, чтобы помочь диагностировать проблему', сделали ли вы это? – brunsgaard

ответ

0

Vagrant будет создавать свой собственный файл анзибль инвентаризации (который вы уже видели) с дефолтов 127.0.0.1 и 2200.

Вы должны указать анзибль файл инвентаризации с помощью ansible.inventory_path

A очень простой файл инвентаризации для использования с Vagrant может выглядеть следующим образом:

по умолчанию ansible_ssh_host = 192.168.111.222 Если выше IP-адрес один набор в вашем Vagrantfile:

config.vm.network: private_network, ф: "192.168.111.222"

От https://docs.vagrantup.com/v2/provisioning/ansible.html

4

Проблема здесь, что ваш site.yml перекрывает удаленный анзибль пользователь будет использовать для корня. Но вы не предоставляете ему закрытый ключ и пароль.

Так что, я установил, что нужно установить ansible_ssh_user в «бродягу», потому что он по умолчанию является известным пользователем, и он будет вести себя так же, как vagrant ssh, если remote_user не переопределяется. И установите sudo true, потому что «бродячий» пользователь sudoer, но не su.

# -*- mode: ruby -*- 
# vi: set ft=ruby : 

Vagrant.configure("2") do |config| 
    config.vm.box = "ubuntu/trusty64" 

    config.vm.network "private_network", ip: "192.168.6.66" 

    config.vm.provider "virtualbox" do |vb| 
    vb.customize ["modifyvm", :id, "--memory", "2048"] 
    end 

    config.vm.provision "ansible" do |ansible| 
    ansible.playbook = "site.yml" 
    ansible.extra_vars = { ansible_ssh_user: 'vagrant' } 
    ansible.sudo = true 
    #ansible.verbose = 'vvvv' 
    end 
end 

Пожалуйста, обратитесь к "Почему анзиблю Provisioner CONNECT AS неверного USER?" раздел Ansible Provisioning of Vagrant Documentation

0

У меня был Ansible on Vagrant 1.7, пытающийся соединиться как root, вероятно, из-за некоторых отдельных вариантов развертывания группы репо по умолчанию. Возможные исправления:

0

У меня была аналогичная проблема, где она не будет SSH на сервер по какой-либо причине предоставления.

vagrant ssh работал нормально, но vagrant provision не смог получить ssh из-за таймаута.

Я, наконец, подключил точки и понял, что это было фактически из-за VPN-клиента, который использует мой работодатель. Клиент Cisco AnyConnect VPN делает какой-то buggery и делает это так, что я должен перезапустить всю свою рабочую станцию, чтобы иметь возможность запускать ее.

К счастью, мне не нужно подключаться к VPN для многих вещей, так что это случается только спорадически для меня.