首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用Ansible setup和Filter过滤Centos 6|不使用ansible-playbook

仅使用Ansible setup和Filter过滤Centos 6|不使用ansible-playbook
EN

Stack Overflow用户
提问于 2021-03-05 22:58:44
回答 1查看 61关注 0票数 0

我正在尝试列出所有Centos 6服务器,并希望为其操作系统升级做准备。

对于单个命令,我使用:

代码语言:javascript
复制
# ansible myhost -b -m setup -a 'filter=ansible_distribution_major_version'

如你所知,它简单地列出了所有Centos 6、7、8,但我只想要Centos 6服务器。如何在单个命令中过滤它,而不是YAML文件,并使用ansible-playbook运行它。

EN

回答 1

Stack Overflow用户

发布于 2021-03-06 00:56:34

这里有一种你可以适应其他类型信息的可能方法。

  1. 打开事实缓存,这样您就可以一次收集事实并重用(在攻略或特别命令中)。下面是一个最小的ansible.cfg文件,用于在磁盘上的json文件中存储缓存信息。有关其他可用插件,请参阅documentation

默认fact_caching=jsonfile fact_caching_connection=/tmp/ansibleFactCache

将该文件存储在当前目录中,您将从该目录发出ad-hoc和playbook命令

  1. 为您的所有主机填充事实缓存:

ansible all -i your/inventory.yml -m setup

  1. 您现在可以发出针对本地主机的调试即席任务,使用相同的清单并只选择与某些条件匹配的主机名。如您问题中所示的CentOS 6示例:

$ ansible localhost -i您的/inventory.yml -m调试-a msg="{{ hostvars | dict2items |msg=(attribute=‘value’)|selectattr(‘ansible_-i’,'eq','CentOS') |hostvars 'eq','6') | map(attribute='inventory_hostname') }}“localhost |dict2items => { "msg":"host_a","host_d”}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66494813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档