Ansible-pull没有库存限制

per*_*o93 4 ansible ansible-playbook

我希望在它们中有一组带有基本应用程序配置手册的git repos,这样我所需要处理的任何虚拟机,无论其名称或角色如何,或者它的存在时间,以便安装基本配置都是为了运行针对此repo的ansible-pull命令,我得到了一个准备好使用的实例.我遇到的问题是,如果我有一个像这样设置的playbook local.yml:

- hosts: localhost
  connection: local
  gather_facts: yes
  user: root
[...]
Run Code Online (Sandbox Code Playgroud)

或者像这样:

- hosts: all
  connection: local
  gather_facts: yes
  user: root
 [...]
Run Code Online (Sandbox Code Playgroud)

我一直收到以下错误:

# ansible-pull -d /tmp/myrepo -U 'http://mygithost/myrepo' 
Starting ansible-pull at 2015-06-09 15:04:05
localhost | success >> {
    "after": "2e4d1c637170f95dfaa8d16ef56491b64a9f931b",
    "before": "d7520ea15baa8ec2c45742d0fd8e209c293c3487",
    "changed": true
}

**ERROR: Specified --limit does not match any hosts**
Run Code Online (Sandbox Code Playgroud)

我能够避免错误的唯一方法是创建一个带有显式组名和显式主机名的显式库存文件,然后使用'-i'标志引用它,如下所示:

# cat /tmp/myrepo/myinventory
[mygroup]
myhost1
myhost2

# cat /tmp/myrepo/local.yml
- hosts: mygroup
  connection: local
  gather_facts: yes
  user: root
 [...]

# ansible-pull -d /tmp/myrepo -i myinventory -U 'http://mygithost/myrepo' 
Run Code Online (Sandbox Code Playgroud)

但我不希望这样,我想要任何主机,无论其名称或角色是否已知能够对repo运行ansible-pull并运行playbook而无需将主机名称明确配置为库存.我怎么做?

Seb*_*ler 13

以下是我ansible-pull在VM中使用的工作流程:

在基本VM我把一个文件名为hosts/etc/ansible:

# cat /etc/ansible/hosts
localhost ansible_connection=local
Run Code Online (Sandbox Code Playgroud)

我的local.yaml开始

- hosts: localhost
  gather_facts: yes
  user: root
  ...
Run Code Online (Sandbox Code Playgroud)

现在我可以使用ansible-pull而不指定hosts文件.