如何修复“无法匹配提供的主机模式,忽略:bigip”错误,适用于 Ansible,而不是 Tower

Ste*_*e J 7 ansible ansible-inventory

我在 VirtualBox 上运行的 ubuntu 16.04 VM 上运行 Ansible Tower v3.4.1 和 Ansible v2.7.6。我运行的剧本在我使用“ansible-playbook”从命令行运行时有效,但当我尝试从 Ansible Tower 运行时失败。我知道我一定在 ansible 塔中有一些配置错误的东西,但我找不到它。

无论我对清单(主机)文件进行什么更改,我都会收到此警告。

$ ansible-playbook 2.7.6

config file = /etc/ansible/ansible.cfg    
configured module search path = [u'/var/lib/awx/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']

ansible python module location = /usr/lib/python2.7/dist-packages/ansible    

executable location = /usr/bin/ansible-playbook
python version = 2.7.12 (default, Nov 12 2018, 14:36:49) [GCC 5.4.0 20160609]

Using /etc/ansible/ansible.cfg as config file

SSH password:     
**/tmp/awx_74_z6yJB4/tmpVlXGCX did not meet host_list requirements**, check plugin documentation if this is unexpected

Parsed /tmp/awx_74_z6yJB4/tmpVlXGCX inventory source with script plugin

PLAYBOOK: addpool.yaml *********************************************************

1 plays in addpool.yaml

 [WARNING]: **Could not match supplied host pattern, ignoring: bigip**

PLAY [Sample pool playbook] ****************************************************
17:05:43

skipping: no hosts matched
Run Code Online (Sandbox Code Playgroud)

我已经为 YAML 启用了清单插件,并将我的主机文件变成了一个hosts.yml文件。

这是我的主机文件:

 192.168.68.253
 192.168.68.254
 192.168.1.165

[centos]
dad2 ansible_ssh_host=192.168.1.165

[bigip]
bigip1 ansible_host=192.168.68.254
bigip2 ansible_host=192.168.68.253
Run Code Online (Sandbox Code Playgroud)

这是我的剧本:

---

- name: Sample pool playbook
  hosts: bigip 
  connection: local

  tasks:
    - name: create web servers pool
      bigip_pool:
        name: web-servers2
        lb_method: ratio-member
        password: admin
        user: admin
        server: '{{inventory_hostname}}'
        validate_certs: no
Run Code Online (Sandbox Code Playgroud)

Ste*_*e J 5

我替换hosts: bigiphosts: all并指定 Tower 中的清单,bigip其中仅包含我要更改的两台主机。这似乎提供了我正在寻找的输出。

对于ansible-playbook命令行,我添加了--limit bigip这似乎提供了我正在寻找的输出。

所以事情似乎很有效,我只是不知道这是否是最佳实践使用。


clo*_*net 0

我认为你需要删除connection: local.

您已指定hosts: bigip希望这些任务仅在bigip组中的主机上运行。然后,您指定connection: local哪个任务会在控制器节点(即本地主机)上运行,而不是在bigip组中的节点上运行。本地主机不是该bigip组的成员,因此剧中的任何任务都不会触发。