安全 |将当前批次中的已完成主机替换为下一批次中的主机
Ansible | Replacing finished hosts in the current batch with hosts from next batch
我实现了一个剧本来迭代 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.788484077\nupdated 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.368744495\nupdated 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.831347906\nupdated 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.953679789\nupdated 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"
}
我是不是误解了host_pinned策略?您能否就如何使用 Ansible 实施我的方法提供一些指导?
您遇到的问题是由于您使用了批处理而不是您的策略插件。 ansible 文档明确指出,在整个批次完成之前,它不会继续进行(见下文)。不过,还有其他方法可以加快速度。您可以考虑使用 ssh pipelining(需要在 /etc/suoders 中禁用 requiretty)或什至有丝分裂剂。这是一篇关于该主题的文章:https://www.toptechskills.com/ansible-tutorials-courses/speed-up-ansible-playbooks-pipelining-mitogen/
In the above example, if we had 4 hosts in the group ‘webservers’, 2 would complete the play completely before moving on to the next 2 hosts:
我实现了一个剧本来迭代 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.788484077\nupdated 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.368744495\nupdated 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.831347906\nupdated 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.953679789\nupdated 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"
}
我是不是误解了host_pinned策略?您能否就如何使用 Ansible 实施我的方法提供一些指导?
您遇到的问题是由于您使用了批处理而不是您的策略插件。 ansible 文档明确指出,在整个批次完成之前,它不会继续进行(见下文)。不过,还有其他方法可以加快速度。您可以考虑使用 ssh pipelining(需要在 /etc/suoders 中禁用 requiretty)或什至有丝分裂剂。这是一篇关于该主题的文章:https://www.toptechskills.com/ansible-tutorials-courses/speed-up-ansible-playbooks-pipelining-mitogen/
In the above example, if we had 4 hosts in the group ‘webservers’, 2 would complete the play completely before moving on to the next 2 hosts: