博客园  :: 首页  :: 管理

首先我们先看一个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