【问题标题】:Ansible - How to sequentially execute playbook for each hostAnsible - 如何为每个主机顺序执行剧本
【发布时间】:2015-02-03 14:21:40
【问题描述】:

我正在使用 ansible 编写 API 部署脚本。我希望这可以通过我的清单文件中的每个主机按顺序工作,以便我可以一次完全部署到一台机器上。

使用 out box 行为,我的剧本中的每个任务都会针对清单文件中的每个主机执行,然后再继续执行下一个任务。

如何更改此行为以在下一个主机上开始之前执行主机的所有任务?理想情况下,我只想拥有一本剧本。

谢谢

【问题讨论】:

    标签: ansible ansible-playbook


    【解决方案1】:

    仔细看看Rolling Updates

    你要找的是

    - hosts: webservers
      serial: 1
      tasks:
        - name: ...
    

    【讨论】:

    【解决方案2】:

    策略允许在每个主机的基础上并行任务。见https://docs.ansible.com/ansible/latest/user_guide/playbooks_strategies.html

    有 3 种策略:线性(默认)、串行和免费(最快)

    - hosts: all
      strategy: free
      tasks:
        ...
    

    【讨论】:

      【解决方案3】:

      使用 --forks=1 指定要使用的并行进程数(默认=5)

      【讨论】:

      • 这有不同的效果。如果您有任务 A 和 B,以及主机 1 和 2,--forks=1 会导致 A1 A2 B1 B2,而 OP 要求 A1 B1 A2 B2(所有任务应用于主机 1,然后所有任务应用于主机 B)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-14
      • 1970-01-01
      相关资源
      最近更新 更多