2017-02-12 79 views
1

Vagrantfile樣子:使用Ansible主機引發`--limit`不匹配任何主機

Vagrant.configure("2") do |config| 
    config.vm.box = "vag-box" 
    config.vm.box_url = "boxes/base.box" 

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

    config.vm.provision :setup, type: :ansible_local do |ansible| 
    ansible.playbook = "playbook.yml" 
    ansible.provisioning_path = "/vagrant" 
    ansible.inventory_path = "/vagrant/hosts" 
    end 
end 

我的劇本文件看起來像:

--- 
- name: Setup system 
    hosts: localhost 
    become: true 
    become_user: root 
    roles: 
    - { role: role1 } 
    - { role: role2 } 

我的hosts文件看起來像:

[localhost] 
localhost # 192.168.100.100 

在執行過程中,出現以下錯誤:

ERROR! Specified --limit does not match any hosts

+1

我無法獲得與您相同的錯誤,但基本上不需要您定義的表單中的主機文件。您可以在不定義組「localhost」的情況下針對「hosts:localhost」運行劇本。註釋掉'ansible.inventory_path'並檢查。 – techraf

回答

1

第一:「本地主機」是一個名稱,按照約定分配給127.0.0.1地址。這指的是本地機器的回送地址。根據您的hosts文件中的評論,我不認爲這是您嘗試使用它的原因。

第二:Vagrant中的Ansible供應商通常會創建一個自定義庫存文件,其中包含用於供應Vagrant框的所需內容。例如:

# Generated by Vagrant 

myvagrantbox ansible_ssh_host=127.0.0.1 ansible_ssh_port=2222 ansible_ssh_user='vagrant' ansible_ssh_private_key_file='/home/sage/ansible/vagrant/myvagrantbox/.vagrant/machines/myvagrantbox/virtualbox/private_key' 

當您重寫庫存文件時,您需要爲您的流浪盒的主機名指定一個類似的行。

如果您從配置中忽略ansible.inventory_path = "/vagrant/hosts"行,它應該JustWork(tm)。您也可能希望在您的配置中指定config.vm.hostname = "myvagrantboxname",以便知道將使用哪個主機名。

有關更多詳細信息,請參閱Using Vagrant and AnsibleVagrant -- Ansible Provisioner文檔。

+0

我想你應該先閱讀文檔。與https://www.vagrantup.com/docs/provisioning/ansible_local.html相關的問題 – techraf