2017-02-12 28 views
1

Мои Vagrantfile выглядит следующим образом:Использование анзибль хостов поднимает `--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 

Мой файл Playbook выглядит следующим образом:

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

Мой хосты файл выглядит следующим образом:

[localhost] 
localhost # 192.168.100.100 

Во время наблюдаемого выполнения я получаю следующее сообщение об ошибке:

ERROR! Specified --limit does not match any hosts

+1

Я не могу получить ту же ошибку, что и вы, но в основном вам не нужен файл hosts в той форме, которую вы определили. Вы можете запустить playbook против 'hosts: localhost' без определения группы' localhost'. Прокомментируйте 'ansible.inventory_path' и проверьте. – techraf

ответ

1

Первый: «localhost» - это имя, присвоенное по адресу 127.0.0.1 по соглашению. Это относится к обратному адресу локальной машины. Я не думаю, что это то, что вы пытаетесь использовать для этого, на основе комментария в вашем файле hosts.

Во-вторых: Профилирование Ansible в Vagrant обычно создает собственный файл инвентаризации с необходимым содержимым для обеспечения коробки 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 Ansible и Vagrant -- Ansible Provisioner.

+0

Я думаю, вы должны сначала прочитать документацию. Тот, который относится к вопросу https://www.vagrantup.com/docs/provisioning/ansible_local.html – techraf