• Ansible facts详解


    Ansible是一个系列文章,我会尽量以通俗易懂、诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些。
    Ansible系列博文直达链接:Ansible入门系列

    前言

    如果你跟着前面的文章在自己的测试环境进行了操作的话,你会发现在Ansible执行完成后,在输出内容中都包含以下这么一项:

    TASK [Gathering Facts] ****************************************
    ok: [192.168.1.3]
    

    从内容来看,这是执行了一个名为Gathering Facts的TASK,但是即使在我们的命令中或者YAML中没有定义这个TASK,也会执行这个任务,这是什么道理?下面我就带着大家对Ansible中的facts一探究竟。

    Ansible facts简介

    大家肯定疑问,这个facts是个啥?

    facts组件是Ansible用于采集被管理机器设备信息的一个功能,采集的机器设备信息主要包含IP地址,操作系统,以太网设备,mac 地址,时间/日期相关数据,硬件信息等。

    那话又说回来了,采集这些信息有什么用呢?有的时候我们需要根据远程主机的信息作为执行条件操作,例如,根据远程服务器使用的操作系统版本,可以安装不同版本的软件包;或者也可以显示与每台远程计算机相关的一些信息,例如每台设备上有多少RAM可用。

    所以,在一些业务场景中,facts对我们是很有帮助的,省去了我们好多工作,大大提高了工作效率。

    Ansible facts用法

    我们可以使用setup模块获取被管理机器的所有facts信息,可以使用filter来查看指定的信息。setup模块获取的整个facts信息被包装在一个JSON格式的数据结构中,ansible_facts是最外层的值。我们可以通过以下Ansible Ad-Hoc命令查看facts信息:

    ansible server1 -m setup
    

    由于输出内容实在太多,这里只贴出部分内容:

    192.168.1.3 | SUCCESS => {
        "ansible_facts": {
            "ansible_all_ipv4_addresses": [
                "192.168.1.3"
            ],
            "ansible_all_ipv6_addresses": [
                "2409:8a10:72:1c10:c59e:af39:7c72:6afb",
                "fe80::7107:62de:8cf8:db00"
            ],
            "ansible_apparmor": {
                "status": "disabled"
            },
            "ansible_architecture": "x86_64",
            "ansible_bios_date": "12/01/2006",
            "ansible_bios_version": "VirtualBox",
            "ansible_cmdline": {
                "BOOT_IMAGE": "/vmlinuz-3.10.0-957.el7.x86_64",
                "LANG": "en_US.UTF-8",
                "crashkernel": "auto",
                "quiet": true,
                "rd.lvm.lv": "centos/swap",
                "rhgb": true,
                "ro": true,
                "root": "/dev/mapper/centos-root"
            },
    ......
    

    由于输出的内容实在是太多了,我们可以使用filter参数来查看指定的信息,比如这样:

    ansible server1 -m setup -a 'filter=ansible_all_ipv4_addresses'
    

    输出内容如下:

    192.168.1.3 | SUCCESS => {
        "ansible_facts": {
            "ansible_all_ipv4_addresses": [
                "192.168.1.3"
            ]
        },
        "changed": false
    }
    

    到这里,话又说回来!我们没有配置Gathering Facts的TASK,但是依然自动的就执行了这个任务,这个默认是在哪里配置的呢?

    Ansible facts配置

    在Ansible的配置文件中,关于facts的重要配置项有以下几个:

    • gathering:facts的开关,默认是开启的;有以下三个取值:

      • smart:开启facts信息收集,但是会优先使用facts缓存信息,可以使用gather_facts: False禁用facts收集;
      • implicit:开启facts信息收集,要禁止收集,必须使用gather_facts: False
      • explicit:关闭facts信息收集,要显式收集,必须使用gather_facts: Ture
    • fact_caching:缓存facts信息的方式;可以配置成jsonfile或者redis

    • fact_caching_connection:缓存插件的配置,针对不同的fact_caching方式,取值含义则不同:

      • 如果fact_cachingjsonfile,则此处应配置存储缓存文件的目录;
      • 如果fact_cachingredis,则此处应按照host:port:database的格式配置redis的信息。
    • gather_timeout:收集超时时间,默认为86400;

    • fact_caching_timeout:设置facts缓存的过期时间,默认是86400秒。

    总结

    这篇文章对Ansible facts进行了一些简单的总结,在后面的文章中,还会涉及到facts的一些内容,希望通过这篇文章,大家能明白Ansible facts的一些简单用法和配置即可!希望对大家有帮助!

    果冻想,认真玩技术的地方。

    2019年10月5日,于内蒙古呼和浩特。

  • 相关阅读:
    Vue.Draggable实现拖拽效果(快速使用)
    1.从面向过程到面向对象的过渡
    微信支付流程
    2.js原型的基本概念
    POST和GET请求的区别
    vue-router2.0
    vue列表渲染,以及鼠标点击改变样式的问题
    复杂数组结构的深拷贝
    高德地图将字符串地址转为经纬度的一个demo
    数组对象排序
  • 原文地址:https://www.cnblogs.com/vipygd/p/13062242.html
Copyright © 2020-2023  润新知