在Ansible库存组中使用通配符不会';I don’我没有按预期工作
运行Ansible 2.9.3 在主机每天进出的大型环境中工作,我需要在主机组中使用通配符主机名:即: [被排除在外的主机] 霍斯特01酒店 host02 旅社03 [各位] 主人* 在我的剧本里我有在Ansible库存组中使用通配符不会';I don’我没有按预期工作,ansible,ansible-inventory,Ansible,Ansible Inventory,运行Ansible 2.9.3 在主机每天进出的大型环境中工作,我需要在主机组中使用通配符主机名:即: [被排除在外的主机] 霍斯特01酒店 host02 旅社03 [各位] 主人* 在我的剧本里我有 名称:“使用主机组进行测试” 主持人:各位,!被排除的主机 连接:本地 任务: 问题是,任务正在排除组中的主机上运行。 如果我在everyone组中特别列出一个被排除的主机,那么该主机将被正确排除 所以Ansible并不像人们想象的那样工作 什么是最好的方法让这个工作 我试过: 主机:“{a
- 名称:“使用主机组进行测试” 主持人:各位,!被排除的主机 连接:本地 任务:
You can use wildcard patterns ... IP addresses, as long as the hosts are named in your inventory by ... IP address:
192.0.\*
\*.example.com
\*.com**
我找到了解决问题的办法:
---
- name: "Add host name to thishost group"
hosts: localhost
connection: local
tasks:
- name: "add host"
ini_file:
path: /opt/ansible/etc/hosts
section: thishost
option: "{{ ansible_hostname }}"
allow_no_value: yes
- meta: refresh_inventory
- name: "Do tasks on all except excluded_hosts"
hosts: thishost,!excluded_hosts
connection: local
tasks:
它的作用是在playbook运行时将主机名添加到名为“thishost”的组中。然后刷新库存文件并运行下一个播放。
这避免了必须不断更新数千台主机的资源清册,避免使用通配符和范围。我们不确定你为什么要这么做-因此很难知道我们是否正确回答了问题-你能在提问时进一步解释你的动机吗?这是问题的重复。我投票决定关闭这个。如果他们“来去太频繁”,听起来你需要创建一个动态清单脚本。这个答案是不相关的。问题中的主机既不是FQDN,也不是IP。在我错过的上一次编辑中,它们是否处于不在TCP/IP上的状态?这是一种在网络上快速汇总未知实体的方法。我确实喜欢命名主机,但对于某些网络,这不是一个选项。