我的Vagrantfile
看起来像是:
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 }
我的主机文件如下:
[localhost]
localhost # 192.168.100.100
在ansible执行期间,我收到以下错误:
ERROR! Specified --limit does not match any hosts
答案 0 :(得分:1)
首先:“localhost”是按惯例分配给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 Ansible和Vagrant -- Ansible Provisioner文档。