使用 Ansible 主机引发 `--limit` 不匹配任何主机
Using Ansible hosts raises `--limit` does not match any hosts
我的 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
首先:"localhost" 是按照约定分配给 127.0.0.1 地址的名称。这是指本地机器的环回地址。根据您的主机文件中的评论,我认为这不是您尝试使用它的目的。
其次:Vagrant 中的 Ansible provisioner 通常会创建一个自定义清单文件,其中包含配置 Vagrant box 所需的内容。例如:
# 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'
当您覆盖清单文件时,您需要为 vagrant box 的主机名指定类似的行。
如果您从配置中省略 ansible.inventory_path = "/vagrant/hosts"
行,它应该是 JustWork(tm)。您可能还希望在配置中指定 config.vm.hostname = "myvagrantboxname"
,这样您就知道将使用什么主机名。
有关详细信息,请参阅 Using Vagrant and Ansible and the Vagrant -- Ansible Provisioner 文档。
我的 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
首先:"localhost" 是按照约定分配给 127.0.0.1 地址的名称。这是指本地机器的环回地址。根据您的主机文件中的评论,我认为这不是您尝试使用它的目的。
其次:Vagrant 中的 Ansible provisioner 通常会创建一个自定义清单文件,其中包含配置 Vagrant box 所需的内容。例如:
# 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'
当您覆盖清单文件时,您需要为 vagrant box 的主机名指定类似的行。
如果您从配置中省略 ansible.inventory_path = "/vagrant/hosts"
行,它应该是 JustWork(tm)。您可能还希望在配置中指定 config.vm.hostname = "myvagrantboxname"
,这样您就知道将使用什么主机名。
有关详细信息,请参阅 Using Vagrant and Ansible and the Vagrant -- Ansible Provisioner 文档。