关于ansible-playbook中的默认TASK [Gathering Facts]的功能及关闭方法
Posted on 2022-10-11 19:10 520_1351 阅读(2913) 评论(0) 编辑 收藏 举报首先我们先看一个ansible-playbook,作用是用来列出目标主机的主机名,简单的测试作用
[ansible@qq-5201351 ~]$ cat linuxtext.yaml --- - hosts: "{{hostid}}" tasks: - name: 1.Query the hostname of the target host shell: hostname
然后我们通过如下命令进行运行:
ansible-playbook -i hosts.txt linuxtext.yaml -e "hostid=1.1.1.1,2.2.2.2"
结果如下,这里省略部分输出:
PLAY [1.1.1.1,2.2.2.2] **************************************************************************************************************************** TASK [Gathering Facts] ******************************************************************************************************************************** ok: [1.1.1.1] ok: [2.2.2.2] TASK [1.Query the hostname of the target host] ******************************************************************************************************** changed: [2.2.2.2] changed: [1.1.1.1] PLAY RECAP ******************************************************************************************************************************************** 2.2.2.2 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 1.1.1.1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
从结果看到,上面居然有2个TASK , 但是我们在定义playbook时只写了一个Task,这里是多了一个Gathering Facts
然后查询了一下,gather_facts,只要是使用了ansible-playbook,默认情况,第 1 个步骤总是执行 Gathering Facts 这个TASK
这个主要收集目标主机的常用信息,如:主机名、内核版本、网卡接口、IP 地址、操作系统版本、CPU、内存、磁盘 等等
这个默认的TASK,也一样会去ssh连接到目标主机,进行信息的获取,因此整个playbook的运行时长肯定会加长
如果我们不需要获取被控机器的Facts数据的话,可以关闭gather_facts,关闭之后,可以加快 ansible-playbook 的执行效率
还有一种情况也是可以建议关闭gather_facts,就是所有task都不需要ssh登录到目标主机
这种情况较少,笔者也曾遇到过,如通过云agent管理目标主机~
关闭的方法如下,只需要在hosts的同级位置,添加上gather_facts: no 即可:
[ansible@qq-5201351 ~]$ cat linuxtext.yaml --- - hosts: "{{hostid}}" gather_facts: no tasks: - name: 1.Query the hostname of the target host shell: hostname
然后再次运行,ansible-playbook -i hosts.txt linuxtext.yaml -e "hostid=1.1.1.1,2.2.2.2",看结果:
[ansible@qq-5201351 ~]$ ansible-playbook -i hosts.txt linuxtext.yaml -e "hostid=1.1.1.1,2.2.2.2" ...............................省略部分输出...................... [WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details PLAY [1.1.1.1,2.2.2.2] **************************************************************************************************************************** TASK [1.Query the hostname of the target host] ******************************************************************************************************** changed: [1.1.1.1] changed: [2.2.2.2] PLAY RECAP ******************************************************************************************************************************************* 2.2.2.2 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 1.1.1.1 : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 [ansible@qq-5201351 ~]$
可以看到,现在整个playbook的结果中,就只有我们定义的那一个TASK了
尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/16781968.html
作者:一名卑微的IT民工
出处:https://www.cnblogs.com/5201351
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
由于博主的水平不高,文章没有高度、深度和广度,只是凑字数,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用读书、参考、引用、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个卑微的IT民工!