Elr*_*ond 23 task ansible ansible-playbook
在游戏层面,我们必须serial: 1
允许我们一次一个主机运行整个游戏。但是我还没有找到一种简单的方法来在单个任务上做到这一点。如果有问题的任务没有执行正确的锁定(无论出于何种原因),这尤其重要。
一个明显的答案是将任务放在自己的游戏中。但这对角色没有帮助。(不得不serial: 1
使用这个角色来演戏并不是很直观。)
wur*_*tel 17
如果您不希望在执行剧本中的步骤时有任何并行性,请将 fork 级别设置为 1:
ansible-playbook --forks=1 ...
Run Code Online (Sandbox Code Playgroud)
你也可以把它放在你的 ansible cfg 文件中:
[defaults]
forks=1
Run Code Online (Sandbox Code Playgroud)
但如果您需要单独使用,请使用上面的命令行选项。
编辑:
serial: 1
做一些完全不同的事情:这就像依次为每个主机运行剧本,等待完整剧本完成,然后再转到下一个主机。forks=1
意味着在一个主机上运行第一个任务,然后在下一个主机上运行相同的任务,所以第一个任务将在下一个任务被触及之前为每个主机运行。
所以你只想forks=1
玩一场;不幸的是,这目前是不可能的。
max*_*zig 11
您可以通过添加throttle: 1
来串行(即逐个主机)运行单个任务。
例子:
---
- hosts: all
tasks:
- name: wait in parallel
command: sleep 20
- name: wait in serial
command: sleep 30
throttle: 1
Run Code Online (Sandbox Code Playgroud)
参考:
注意:throttle
在 Ansible 2.9 中引入
小智 5
这个问题有一个解决方法 - 可以将主机(或一组)列表传递给with_items
,然后delegate_to
与此列表一起使用。这种方式任务将由主机主机执行。
例如:
- name: start and enable rabbitmq (run task host by host)
service:
name: "rabbitmq-server"
state: "started"
enabled: true
delegate_to: "{{ item }}"
with_items: "{{ groups['rabbitmq-cluster'] }}"
run_once: true
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
52458 次 |
最近记录: |