我的问题很简单,ansible在内部执行什么命令或如何执行以收集诸如ansible_os_family,ansible_distribution_major_version等系统信息。
答案 0 :(得分:0)
Ansible有多种收集事实的方法。默认情况下,它尝试使用所有类型的插件来收集事实。您可以选择JGK提到的Ansible自己的事实收集插件,也可以使用外部程序来收集事实。这样。
- name: Collect only facts returned by facter
setup:
gather_subset:
- '!all'
- '!any'
- facter
FACTER
因素是收集事实的外部工具。根据文档,明确提及事实者具有以下作用:
运行事实发现程序 (https://github.com/puppetlabs/facter)在远程系统上,返回 可以用于库存用途的JSON数据。
此工具检测操作系统类型,并以此为基础收集有关该系统的更多信息。这取决于您对哪个事实感兴趣。根据您对什么感兴趣,您需要深入研究代码以查看其如何收集事实。它不仅仅是一个命令。对于Linux,您可以找到用于事实发现的代码here。查看operating_system_resolver.cc
。您可以看到不同的Linux发行版具有不同的收集事实的方式。例如在ubuntu上,它使用lsb-release命令收集一些事实。
OHAI
Ansible支持的另一个工具是ohai。平台事实的代码可以在lib/ohai/plugins/linux/platform.rb
答案 1 :(得分:0)
在gather_facts
中使用setup module完成。 setup module
本身使用fact
模块实用程序。
ansible_os_family
在distribution.py中完成ansible_distribution_major_version
在distribution.py中完成事实实用程序的ansible source code是进一步研究的良好起点。