• ansible设置串行的方法


    实验环境:ansible2.7

    1、默认情况下,Ansible将尝试并行管理playbook中所有的机器。对于滚动更新用例,可以使用serial关键字定义Ansible一次应管理多少主机:

    - name: test play
      hosts: webservers
      serial: 2
      gather_facts: False   // 获取主机相关信息 true|false
    tasks: - name: task one comand: hostname - name: task two command: hostname 

    在上面的例子中,如果我们在“WebServers”组中有4个主机,后面2个主机等到前面2个主机执行完后执行:

    PLAY [webservers] ****************************************
    
    TASK [task one] ******************************************
    changed: [web2]
    changed: [web1]
    
    TASK [task two] ******************************************
    changed: [web1]
    changed: [web2]
    
    PLAY [webservers] ****************************************
    
    TASK [task one] ******************************************
    changed: [web3]
    changed: [web4]
    
    TASK [task two] ******************************************
    changed: [web3]
    changed: [web4]
    
    PLAY RECAP ***********************************************
    web1      : ok=2    changed=2    unreachable=0    failed=0
    web2      : ok=2    changed=2    unreachable=0    failed=0
    web3      : ok=2    changed=2    unreachable=0    failed=0
    web4      : ok=2    changed=2    unreachable=0    failed=0
    

    2、还可以将serial关键字指定为百分比,表示每次并行执行的主机数占总数的比例:

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

    其他用法详见官网:
    https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html#id10

    Ansible 并行和异步

    增加并行进程数

    Ansible提供一个forks的属性,可以设置运行并行进程数。这个值默认比较保守,只有5个并行进程。我们可以根据自己的机器性能以及网络情况来设定,很多人使用50,也有用500以上的。如果有很多机器要管理的话,可以尝试先增加这个值,看看效果。有三个地方可以设置forks的数量:

    • 环境变量:export ANSIBLE_FORKS=100
    • ansible.cfg这个配置文件里设置:forks=100
    • 运行ansible命令时增加参数:-f 100

    当机器数量比较大的时候,难免会有几台机器不能正常执行。这时候ansible会有提示to retry, use: --limit @/xxx/xxx.retry,把它增加到上个命令的后面就好了。

    异步

    有时候执行某个任务可能需要很长的时间,在集群规模较大的情况下慢得让人无法忍受。这时可以考虑使用异步模式。在tasks里增加async的属性,设成某个数字,比如60,意思就是这个任务最大运行时间不能超过60秒。也可以设成0,意思是不管任务运行多久,一直等待即可。如果没有指定async,则默认为同步模式。还可以设定poll,默认值为10,意思就是每隔10秒轮询查看结果。如果不需要查看结果,设为0就好了。还可以通过registerasync_status设定暂时不查看结果,等需要的时候再查看。具体做法可以参考上面的异步模式官网文档,也可以看翻译的中文文档

  • 相关阅读:
    (转)Paint类的主要方法介绍
    (转)实时对讲机
    (转)Android:Layout_weight的深刻理解
    好的网址
    自定义控件模板,不用依赖属性---------------------WPF
    asyns和await实现传统的异步---------C#
    线程访问wpf的控件(与winform有差异)---------------WPF
    C#多线程之Task------------ C#
    换肤功能的实现-------------WPF
    访问嵌入的资源----图片实例-------C#
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/14446264.html
Copyright © 2020-2023  润新知