2017-02-12 2 views
1

Meine Vagrantfile wie folgt aussieht:ansible Hosts verwenden wirft `--limit` noch keine Hosts überein

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 

sieht mein Textbuch-Datei wie:

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

Meine hosts-Datei wie folgt aussieht:

[localhost] 
localhost # 192.168.100.100 

Während der Ausführung kann ich den folgenden Fehler erhalten:

ERROR! Specified --limit does not match any hosts

+1

Ich kann nicht den gleichen Fehler wie Sie erhalten, aber im Grunde brauchen Sie nicht die Hosts-Datei in der von Ihnen definierten Form. Sie können das Playbook gegen 'hosts: localhost' ausführen, ohne die Gruppe' localhost' zu definieren. Kommentieren Sie den 'ansible.inventory_path' und prüfen Sie. – techraf

Antwort

1

Erstens: "localhost" ist ein Name, der per Konvention der Adresse 127.0.0.1 zugewiesen wird. Dies bezieht sich auf die Loopback-Adresse des lokalen Rechners. Ich glaube nicht, dass Sie das versuchen, basierend auf dem Kommentar in Ihrer Host-Datei.

Zweitens: Der Ansible-Bereitsteller in Vagrant erstellt normalerweise eine benutzerdefinierte Inventardatei mit dem erforderlichen Inhalt zum Bereitstellen der Vagrant-Box. Zum Beispiel:

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

Wie Sie die Inventardatei überschreiben, müssen Sie eine ähnliche Zeile für den Hostnamen des vagabundierenden Feld angeben.

Wenn Sie die ansible.inventory_path = "/vagrant/hosts" Zeile aus Ihrer Konfiguration weglassen, sollte es JustWork (tm). Sie können auch in Ihrer Konfiguration config.vm.hostname = "myvagrantboxname" angeben, damit Sie wissen, welcher Hostname verwendet wird. Weitere Informationen finden Sie in der Dokumentation Using Vagrant and Ansible und Vagrant -- Ansible Provisioner.

+0

Ich denke, du solltest zuerst die Dokumentation lesen. Die Frage, die sich auf die Frage https://www.vagrantup.com/docs/provisioning/ansible_local.html bezieht – techraf

Verwandte Themen