Ansible collect_facts,它如何收集有关Linux操作系统的详细信息

时间:2018-11-05 09:13:23

标签: ansible

我的问题很简单,ansible在内部执行什么命令或如何执行以收集诸如ansible_os_family,ansible_distribution_major_version等系统信息。

2 个答案:

答案 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 source code是进一步研究的良好起点。