我实现了一个在10个主机上迭代的剧本。在这10个主机中,host_2
和host_8
速度较慢。我在这个设置中使用了2的批量大小。我的预期结果是,当剧本以host_1
和host_2
开始时,只要以host_1
结束(更快(,它就会从下一批中抓取一个主机,而不是等待两个主机都完成才能开始下一批。不幸的是,使用带有host_pinned
策略的剧本(本应按我的预期工作(,结果与免费策略相同,即只有当两个主机都从当前批次中完成时,才能开始下一批次。结果如下:
PLAY [all] **************************************************************************************************************************************************************************************************************************************************************************
TASK [stop : stop for specific hosts] ***********************************************************************************************************************************************************************************************************************************************
TASK [stop : stop for specific hosts] ***********************************************************************************************************************************************************************************************************************************************
skipping: [host_1]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
skipping: [host_1]
TASK [stop : stop for other hosts] **************************************************************************************************************************************************************************************************************************************************
changed: [host_1 -> localhost]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [host_1] => {
"msg": "stop host_1 10:57:16.373188889"
}
TASK [update : update] **************************************************************************************************************************************************************************************************************************************************************
changed: [host_1 -> localhost]
TASK [update : debug] ***************************************************************************************************************************************************************************************************************************************************************
ok: [host_1] => {
"msg": "updating host_1 10:57:21.788484077nupdated host_1 10:57:23.790958603"
}
TASK [start : start] ****************************************************************************************************************************************************************************************************************************************************************
changed: [host_1 -> localhost]
TASK [start : debug] ****************************************************************************************************************************************************************************************************************************************************************
ok: [host_1] => {
"msg": "start host_1 10:57:24.185053675"
}
TASK [start : debug] ****************************************************************************************************************************************************************************************************************************************************************
changed: [host_2 -> localhost]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [host_2] => {
"msg": "stop host_2 10:57:16.415522282"
}
TASK [stop : stop for other hosts] **************************************************************************************************************************************************************************************************************************************************
skipping: [host_2]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
skipping: [host_2]
TASK [update : update] **************************************************************************************************************************************************************************************************************************************************************
changed: [host_2 -> localhost]
TASK [update : debug] ***************************************************************************************************************************************************************************************************************************************************************
ok: [host_2] => {
"msg": "updating host_2 10:58:17.368744495nupdated host_2 10:58:19.372907064"
}
TASK [start : start] ****************************************************************************************************************************************************************************************************************************************************************
changed: [host_2 -> localhost]
TASK [start : debug] ****************************************************************************************************************************************************************************************************************************************************************
ok: [host_2] => {
"msg": "start host_2 10:58:19.903162652"
}
PLAY [all] **************************************************************************************************************************************************************************************************************************************************************************
TASK [stop : stop for specific hosts] ***********************************************************************************************************************************************************************************************************************************************
TASK [stop : stop for specific hosts] ***********************************************************************************************************************************************************************************************************************************************
skipping: [host_3]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
skipping: [host_4]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
skipping: [host_3]
TASK [stop : stop for other hosts] **************************************************************************************************************************************************************************************************************************************************
TASK [stop : stop for other hosts] **************************************************************************************************************************************************************************************************************************************************
skipping: [host_4]
TASK [stop : stop for other hosts] **************************************************************************************************************************************************************************************************************************************************
changed: [host_3 -> localhost]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [host_3] => {
"msg": "stop host_3 10:58:21.214160633"
}
TASK [update : update] **************************************************************************************************************************************************************************************************************************************************************
TASK [update : update] **************************************************************************************************************************************************************************************************************************************************************
changed: [host_4 -> localhost]
TASK [stop : debug] *****************************************************************************************************************************************************************************************************************************************************************
ok: [host_4] => {
"msg": "stop host_4 10:58:21.329958767"
}
TASK [update : update] **************************************************************************************************************************************************************************************************************************************************************
changed: [host_3 -> localhost]
TASK [update : debug] ***************************************************************************************************************************************************************************************************************************************************************
ok: [host_3] => {
"msg": "updating host_3 10:58:26.831347906nupdated host_3 10:58:28.833336983"
}
TASK [start : start] ****************************************************************************************************************************************************************************************************************************************************************
TASK [start : start] ****************************************************************************************************************************************************************************************************************************************************************
changed: [host_4 -> localhost]
TASK [update : debug] ***************************************************************************************************************************************************************************************************************************************************************
ok: [host_4] => {
"msg": "updating host_4 10:58:26.953679789nupdated host_4 10:58:28.970638599"
}
TASK [start : start] ****************************************************************************************************************************************************************************************************************************************************************
changed: [host_3 -> localhost]
TASK [start : debug] ****************************************************************************************************************************************************************************************************************************************************************
ok: [host_3] => {
"msg": "start host_3 10:58:29.662201166"
}
TASK [start : debug] ****************************************************************************************************************************************************************************************************************************************************************
changed: [host_4 -> localhost]
TASK [start : debug] ****************************************************************************************************************************************************************************************************************************************************************
ok: [host_4] => {
"msg": "start host_4 10:58:29.801761229"
}
我是否误解了主机的策略?你能给我一些关于如何使用Ansible实现我的方法的指导吗?
您遇到的问题是由于您使用了批处理,而不是策略插件。易解释的文档特别指出,在整个批次完成之前,它不会继续(见下文(。不过,还有其他方法可以加快速度。您可以考虑使用ssh管道(需要在/etc/suoders中禁用requirety(,甚至使用mitogen。这是一篇关于这个主题的文章:https://www.toptechskills.com/ansible-tutorials-courses/speed-up-ansible-playbooks-pipelining-mitogen/
https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html#rolling-更新批量大小
在上面的例子中,如果我们在"webservers"组中有4个主机,那么在转到接下来的2个主机之前,2个主机将完全完成播放: