使用Ansible主机引发`--limit`与任何主机

时间:2017-02-12 13:55:15

标签: vagrant ansible host

我的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

1 个答案:

答案 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 AnsibleVagrant -- Ansible Provisioner文档。