我的剧本中有一项任务,我想一次只在一台主机上运行。其余的任务我想要尊重--forks选项。这可能吗?
答案 0 :(得分:3)
具体来说,你可以添加一个" serial:x"游戏参数,其中x是分叉数
答案 1 :(得分:2)
是的,可以通过使用throttle
keyword:
并发任务的数量限制在任务,块和剧本级别上运行。这个 独立于分叉和序列设置,但不能设置为高于 这些限制。例如,如果前叉设置为10,油门设置为15, 最多可以并行操作10个主机。
示例:
---
- hosts: all
tasks:
- name: wait in parallel
command: sleep 20
- name: wait in serial
command: sleep 30
throttle: 1
throttle
关键字在Ansible since version 2.9中可用。
答案 2 :(得分:0)
在Ansible的术语文档词汇表中,有此段落
滚动更新
一次寻址一组N中的多个节点的行为 避免一次全部更新并使系统脱机。对于 例如,在具有500个节点的Web拓扑中,该节点处理的流量非常大, 一次更新10或20台计算机可能是合理的, 完成后,跳至下一个10或20。 Ansible中的serial:关键字 playbooks控制滚动更新池的大小。默认是 一次解决批次大小,这就是您要做的事情 必须选择加入。操作系统配置(例如确保配置文件 正确)通常不必使用滚动更新模型,但是 可以根据需要这样做。
使用--forks=X
和serial:
剧本构造无法
限制单个任务按顺序运行。这是因为serial:
关键字仅适用于剧本。在这里,您唯一的办法是将您的任务分成2本剧本,并将包括要按顺序运行的任务的整个剧本限制为serial: 1
。
$ cat helloansible.yml
---
- hosts: all
serial: 1
tasks:
- debug:
msg: "hello ansible - serial"
- hosts: all
tasks:
- debug:
msg: "hello ansible - batched"
当我针对清单运行此命令时,您会看到第一个剧本遍历清单中的每个主机:
$ ansible-playbook -i inventory/lab helloansible.yml -l server*
PLAY [all] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [server-01a.lab1.mydom.local]
TASK [debug] ************************************************************************************************************************************************************************************************
ok: [server-01a.lab1.mydom.local] => {
"msg": "hello ansible - serial"
}
PLAY [all] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [server-01b.lab1.mydom.local]
TASK [debug] ************************************************************************************************************************************************************************************************
ok: [server-01b.lab1.mydom.local] => {
"msg": "hello ansible - serial"
}
PLAY [all] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [server-redis-01a.lab1.mydom.local]
TASK [debug] ************************************************************************************************************************************************************************************************
ok: [server-redis-01a.lab1.mydom.local] => {
"msg": "hello ansible - serial"
}
PLAY [all] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [server-redis-01b.lab1.mydom.local]
TASK [debug] ************************************************************************************************************************************************************************************************
ok: [server-redis-01b.lab1.mydom.local] => {
"msg": "hello ansible - serial"
}
PLAY [all] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [server-redis-01c.lab1.mydom.local]
TASK [debug] ************************************************************************************************************************************************************************************************
ok: [server-redis-01c.lab1.mydom.local] => {
"msg": "hello ansible - serial"
}
在运行的第二本剧本中:
PLAY [all] **************************************************************************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************************************************************
ok: [server-01b.lab1.mydom.local]
ok: [server-redis-01a.lab1.mydom.local]
ok: [server-redis-01c.lab1.mydom.local]
ok: [server-redis-01b.lab1.mydom.local]
ok: [server-01a.lab1.mydom.local]
TASK [debug] ************************************************************************************************************************************************************************************************
ok: [server-01a.lab1.mydom.local] => {
"msg": "hello ansible - batched"
}
ok: [server-01b.lab1.mydom.local] => {
"msg": "hello ansible - batched"
}
ok: [server-redis-01a.lab1.mydom.local] => {
"msg": "hello ansible - batched"
}
ok: [server-redis-01b.lab1.mydom.local] => {
"msg": "hello ansible - batched"
}
ok: [server-redis-01c.lab1.mydom.local] => {
"msg": "hello ansible - batched"
}
PLAY RECAP **************************************************************************************************************************************************************************************************
server-01a.lab1.mydom.local : ok=4 changed=0 unreachable=0 failed=0
server-01b.lab1.mydom.local : ok=4 changed=0 unreachable=0 failed=0
server-redis-01a.lab1.mydom.local : ok=4 changed=0 unreachable=0 failed=0
server-redis-01b.lab1.mydom.local : ok=4 changed=0 unreachable=0 failed=0
server-redis-01c.lab1.mydom.local : ok=4 changed=0 unreachable=0 failed=0
答案 3 :(得分:0)
使用节流选项,该选项允许每个任务的派生数目与命令行中定义的数目不同。该选项仅在ansible 2.9中可用