2014-10-08 12 views
5

मैं कुछ Vagrant/Ansible सामान करने की कोशिश कर रहा हूं, लेकिन शुरुआत से समस्याओं में भाग रहा हूं। यहाँ मेरी Vagrantfile है:वग्रेंट उत्तरदायी प्रावधान एसएसएच त्रुटि

# -*- 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. 
है

यदि मैं देखता हूं

default ansible_ssh_host=127.0.0.1 ansible_ssh_port=2200 

मैं के रूप में private_network में सेट वहाँ आईपी समान होने की अपेक्षा होगी: .vagrant/provisioners/ansible/सूची/vagrant_ansible_inventory में, मैं निम्नलिखित देखते हैं? मैं इस पर एक घंटे से अधिक समय से घूर रहा हूं, क्या मैंने कुछ गलत किया? मुझे लगता है कि आईपी ठीक से या कुछ सेट नहीं किया जा रहा है। मैं ping 192.168.6.66 कर सकता हूं।

+0

'हम आपको सलाह देते हैं कि आप -vvvv का उपयोग करके कमांड चलाएं, जो एसएसएच डीबगिंग आउटपुट को समस्या का निदान करने में मदद करने के लिए सक्षम करेगा' क्या आपने ऐसा किया था? – brunsgaard

उत्तर

0

Vagrant यह 127.0.0.1 की चूक के साथ खुद ansible सूची फ़ाइल (जो आप को देखा है) और 2200

है पैदा करेगा आप ansible.inventory_path

एक का उपयोग कर ansible सूची फ़ाइल निर्दिष्ट करने की आवश्यकता Vagrant साथ प्रयोग के लिए बहुत ही सरल सूची फ़ाइल लग सकता है जैसे:

डिफ़ॉल्ट ansible_ssh_host = 192.168.111.222 कहाँ ऊपर आईपी पते अपने Vagrantfile में एक सेट है:

config.vm.network: private_network, आईपी: "192.168.111.222"

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

4

यहाँ समस्या यह है कि आपके site.yml ओवरराइड करता है दूरस्थ उपयोगकर्ता ansible जड़ के लिए प्रयोग करेंगे से। लेकिन, आप इसके लिए निजी कुंजी प्रदान नहीं करते हैं, न ही पासवर्ड।

तो जिस तरह से, मैंने तय किया कि यह ansible_ssh_user को "वारंटी" पर सेट करना था, क्योंकि यह डिफ़ॉल्ट ज्ञात उपयोगकर्ता है, और उत्तरदायी vagrant ssh के समान व्यवहार करेगा यदि रिमोट_यूसर ओवरराइड नहीं है। और sudo सत्य सेट करें, क्योंकि "वारंटी" उपयोगकर्ता सुडौयर है, लेकिन सु नहीं है।

# -*- 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 

को देखें "क्यों गलत प्रयोक्ता के रूप ANSIBLE प्रावधानकर्ता कनेक्ट होता है?" सेक्शन Ansible Provisioning of Vagrant Documentation

0

मुझे root के रूप में कनेक्ट करने की कोशिश कर रहा है, शायद root के रूप में कनेक्ट करने का प्रयास कर रहा था, शायद कुछ अलग तैनाती रेपो समूह वर्र्स डिफ़ॉल्ट के कारण। संभावित समाधान:

0

प्रति के रूप में मैं एक ऐसी ही समस्या है, जहां यह प्रावधान के लिए जो भी कारण के लिए सर्वर में ssh नहीं होता हो रही थी डिफ़ॉल्ट रूप से दूरदराज के उपयोगकर्ता, बाध्य करती है।

vagrant ssh ठीक काम किया, लेकिन vagrant provision टाइमआउट के कारण एसएसएच में विफल हो जाएगा।

अंत में मैंने बिंदुओं को जोड़ा और महसूस किया कि यह वास्तव में वीपीएन क्लाइंट की वजह से था कि मेरे नियोक्ता ने हमें उपयोग किया है। सिस्को एनीकनेक्ट वीपीएन क्लाइंट कुछ प्रकार की बगरी करता है और इसे बनाता है ताकि मुझे इसे चलाने में सक्षम होने के लिए अपने पूरे वर्कस्टेशन को पुनरारंभ करना पड़े।

सौभाग्य से, मुझे कई चीजों के लिए वीपीएन से कनेक्ट होने की आवश्यकता नहीं है, इसलिए यह केवल मेरे लिए स्पोरैडिक होता है।

संबंधित मुद्दे