使用Ansible主机引发`--limit`不匹配任何主机
我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
第一:“本地主机”是一个名称,按照约定分配给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文档。
我想你应该先阅读文档。与https://www.vagrantup.com/docs/provisioning/ansible_local.html相关的问题 – techraf
我无法获得与您相同的错误,但基本上不需要您定义的表单中的主机文件。您可以在不定义组“localhost”的情况下针对“hosts:localhost”运行剧本。注释掉'ansible.inventory_path'并检查。 – techraf