首页 > 解决方案 > Ansible 主机文件解析未按预期工作

问题描述

我有一个奇怪的问题。我有一个包含多个组的“主机”文件。出于某种原因,当我使用“ansible-playbook playbook.yml -l GROUPNAME”时,ansible 会将 playbook 应用于“hosts”文件中的所有主机。

主机文件

all:
  children:
   GROUP1:
    children:
        webservers:
            hosts:
                hostname1:
        sqlservers:
            hosts:
                hostname2:

   GROUP2:
    children:
        webservers:
            hosts:
                hostname3:
                hostname4:

   GROUP3:
    children:
        webservers:
            hosts:
                hostname5:
                hostname6:
        sqlservers:
            hosts:
                hostname7:

可靠的日志:

Positional arguments: playbook.yml
verbosity: 4
connection: smart
timeout: 10
become_method: sudo
tags: ('all',)
inventory: ('hostsfile',)
subset: GROUP1
forks: 5
1 plays in playbook.yml

在“playbook.yml”文件中,我确实有“主机:全部”,但在不同的工作中我没有这个问题。

Ansible 确实注意到了我指出的子集,但没有对其进行过滤,而是针对所有主机成功运行 playbook。

我昨天在网上梳理了一整天,找不到问题。

任何帮助将不胜感激。

标签: ansibleansible-inventory

解决方案


我想我自己找到了解决这个问题的方法。默认情况下,Ansible 使用一组清单插件解析主机文件,直到成功。通过在“ansible.cfg”中指定插件:

[inventory]
enable_plugins = yaml

问题解决了,不知道为什么。

https://docs.ansible.com/ansible/latest/plugins/inventory.html


推荐阅读