• Ansible:执行过程分析、异步模式和速度优化



     -B SECONDS, --background SECONDS
                            run asynchronously, failing after X seconds
                            (default=N/A)
     -P POLL_INTERVAL, --poll POLL_INTERVAL
                            set the poll interval if using -B (default=15)
     -f FORKS, --forks FORKS
                            specify number of parallel processes to use
                            (default=5)
    -B  后台异步执行  -P隔多长时间检查一下 -f 一次启动几个进程并发执行

    使用ansible-vvv-vvvv分析执行过程。以下是一个启动远程192.168.100.61上httpd任务的执行过程分析。其中将不必要的信息都是用"....."替换了。

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    1. # 读取配置文件,然后开始执行对应的处理程序。
    2. Using /etc/ansible/ansible.cfg as config file META: ran handlers # 第一个任务默认都是收集远程主机信息的任务。 # 第一个收集任务,加载setup模块 Using module file /usr/lib/python2.7/site-packages/ansible/modules/system/setup.py # 建立连接,获取被控节点当前用户的家目录,用于存放稍后的临时任务文件,此处返回值为/root。 # 在-vvv的结果中,第一行属于描述性信息,第二行为代码执行段,第三行类似此处的<host_node>(,,,,,)为上一段代码的返回结果。后同 <192.168.100.61> ESTABLISH SSH CONNECTION FOR USER: None <192.168.100.61> SSH: EXEC ssh -C .......................... <192.168.100.61> (0, '/root\n', '') # 再次建立连接,在远端创建临时任务文件的目录,临时目录由配置文件中的remote_tmp指令控制 <192.168.100.61> ESTABLISH SSH CONNECTION FOR USER: None <192.168.100.61> SSH: EXEC ssh -C .......................... '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202 `" && echo ansible-tmp-1495977564.58-40718671162202="` echo /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202 `" ) && sleep 0'"'"'' <192.168.100.61> (0, 'ansible-tmp-1495977564.58-40718671162202=/root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202\n', '') # 将要执行的任务放到临时文件中,并使用sftp将任务文件传输到被控节点上 <192.168.100.61> PUT /tmp/tmpY5vJGX TO /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202/setup.py <192.168.100.61> SSH: EXEC sftp -b - -C ............. '[192.168.100.61]' <192.168.100.61> (0, 'sftp> put /tmp/tmpY5vJGX /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202/setup.py\n', '') # 建立连接,设置远程任务文件其所有者有可执行权限 <192.168.100.61> ESTABLISH SSH CONNECTION FOR USER: None <192.168.100.61> SSH: EXEC ssh -C ......................... '/bin/sh -c '"'"'chmod u+x /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202/ /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202/setup.py && sleep 0'"'"'' <192.168.100.61> (0, '', '') # 建立连接,执行任务,执行完成后立即删除任务文件,并返回收集到的信息给ansible。到此为止,setup收集任务结束,关闭共享连接 <192.168.100.61> ESTABLISH SSH CONNECTION FOR USER: None <192.168.100.61> SSH: EXEC ssh -C ............ '/bin/sh -c '"'"'/usr/bin/python /root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202/setup.py; rm -rf "/root/.ansible/tmp/ansible-tmp-1495977564.58-40718671162202/" > /dev/null 2>&1 && sleep 0'"'"'' <192.168.100.61> (0, '\r\n{"invocation": {"...........', 'Shared connection to 192.168.100.61 closed.\r\n') # 进入下一个任务,此处为服务管理任务,所以加载service模块 Using module file /usr/lib/python2.7/site-packages/ansible/modules/system/service.py # 建立连接,获取被控节点当前用户的家目录,用于存放稍后的临时任务文件,此处返回值为/root <192.168.100.61> ESTABLISH SSH CONNECTION FOR USER: None <192.168.100.61> SSH: EXEC ssh -C ......................... <192.168.100.61> (0, '/root\n', '') # 建立连接,将要执行的任务放入到临时文件中,并传输到远程目录 <192.168.100.61> ESTABLISH SSH CONNECTION FOR USER: None <192.168.100.61> SSH: EXEC ssh -C .............. '/bin/sh -c '"'"'( umask 77 && mkdir -p "` echo /root/.ansible/tmp/ansible-tmp-1495977564.97-137863382080241 `" && echo ansible-tmp-1495977564.97-137863382080241="` echo /root/.ansible/tmp/ansible-tmp-1495977564.97-137863382080241 `" ) && sleep 0'"'"'' <192.168.100.61> (0, 'ansible-tmp-1495977564.97-137863382080241=/root/.ansible/tmp/ansible-tmp-1495977564.97-137863382080241\n', '') <192.168.100.61> PUT /tmp/tmpn5uZhP TO /root/.ansible/tmp/ansible-tmp-1495977564.97-137863382080241/service.py <192.168.100.61> SSH: EXEC sftp -b -
  • 相关阅读:
    Android Studio 的aapt2.exe在哪个目录下
    【云原生】k8s 中的 hostNetwork 和 NetworkPolicy(网络策略)讲解与实战操作
    虚拟内存初探CSAPP
    LeetCode每日一题(1627. Graph Connectivity With Threshold)
    应用监控 eBPF 版:实现 Golang 微服务的无侵入应用监控
    设计模式—桥接模式
    机房环境监控什么意思?机房环境监控系统作用
    2022/11/18拓展班上机课
    如何使用windbg查看C#某个线程的栈大小 ?
    【重度踩雷】ROS安装过程中的问题
  • 原文地址:https://blog.csdn.net/mmgithub123/article/details/127733692