ansible优化


      查看playbook执行所消耗的时间

      [student@workstation projects-parallelism]$ time ansible-playbook playbook.yml 

      PLAY [Update web server] *****************************************************************

      TASK [Gathering Facts] *******************************************************************
      ok: [serverd.lab.example.com]
      ok: [serverb.lab.example.com]
      ok: [servera.lab.example.com]
      ok: [serverc.lab.example.com]

      TASK [Latest version of apache installed] ************************************************
      changed: [servera.lab.example.com]
      changed: [serverb.lab.example.com]
      changed: [serverc.lab.example.com]
      changed: [serverd.lab.example.com]

      RUNNING HANDLER [Restart apache] *********************************************************
      changed: [serverb.lab.example.com]
      changed: [serverd.lab.example.com]
      changed: [servera.lab.example.com]
      changed: [serverc.lab.example.com]

      PLAY RECAP *******************************************************************************
      servera.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
      serverb.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
      serverc.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
      serverd.lab.example.com : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0


      real 0m41.904s
      user 0m2.620s
      sys 0m1.346s


      forks并发数量

      forks是线程数,受限于CPU的核心数,但是加大forks的值,能让CPU尽量的提升并发数量,一定程度上提高执行效率
      ansible的forks数量默认是5


      查看默认的forks数量

      [student@workstation ~]$ ansible-config dump | grep -i forks
      DEFAULT_FORKS(default) = 5


      修改forks

      # 编辑配置文件
      vim ansible.cfg

      # 修改forks数量
      forks = 10


      serial滚动更新

      默认情况下,Ansible将尝试并行管理playbook中所有的机器。
      可以使用serial关键字定义Ansible一次应管理多少主机.

      常应用与负载均衡环境下,不能一次性停止所有主机的场景。


      按百分比执行

      - name: test play
      hosts: webservers
      serial: "30%"


      指定单次执行数量

      - name: test play
      hosts: webservers
      serial: 2


      gather_facts收集主机信息

      playbook执行的第一个默认tasks是gather_facts,用于收集主机信息
      如果要执行的任务并不需要调用主机信息变量,关闭能提高运行速度

      - name: test play
      hosts: webservers
      gather_facts: False
      tasks:
      - name: task one
      comand: hostname