如何组合一组具有相同缓慢设置和拆卸的Ansible剧本?

如何组合一组具有相同缓慢设置和拆卸的Ansible剧本?,ansible,Ansible,我有大约10本做模块化工作的剧本,但都需要重启机器才能生效 有没有一种简单的方式可以说“运行这10个剧本,但跳过所有剧本的重启阶段,只在最后重启” 单个剧本示例 试图把它们结合起来 尝试解决的问题 机器有10次重新启动,而此时只需要一次,这会导致作业花费的时间比它应该花费的时间长得多——对于某些速度较慢的机器,一小时而不是10分钟 一个简单的修复方法是删除所有单一剧本的重新启动,但这带来了一个新问题,即现在没有任何单一剧本可以工作,因为每个剧本都需要重新启动才能工作 我可以将所有内容复制粘贴到更

我有大约10本做模块化工作的剧本,但都需要重启机器才能生效

有没有一种简单的方式可以说“运行这10个剧本,但跳过所有剧本的重启阶段,只在最后重启”

单个剧本示例 试图把它们结合起来 尝试解决的问题 机器有10次重新启动,而此时只需要一次,这会导致作业花费的时间比它应该花费的时间长得多——对于某些速度较慢的机器,一小时而不是10分钟

一个简单的修复方法是删除所有单一剧本的重新启动,但这带来了一个新问题,即现在没有任何单一剧本可以工作,因为每个剧本都需要重新启动才能工作


我可以将所有内容复制粘贴到更多的剧本中并手动删除重新启动,但我不喜欢离开单一来源,尤其是因为这些剧本随着代码更改和新的系统行为需要解决而不断调整和更新。

在每个剧本中,向重新启动任务添加相同的唯一标记
my\u reboot
,然后使用
--跳过标记my\u reboot
运行所有剧本。在顶级剧本或后期任务中创建一个处理程序。

我想你可能已经混淆了Ansible剧本的目的和任务。根据您发布的伪代码,您的剧本应该是可重用的Ansible角色(并且可能有只运行一个角色的剧本)。如果将脚本更改为使用角色,则可以使用重新启动。为了得到灵感,你可以检查一下。你有没有考虑过使用句柄?@ Mavo:简单的处理程序是NoGo。看到了吗?“@VladimirBotka我明白了,但我不明白你的意思。。。他的使用正是处理器设计的目的。在所有剧本之后,将在最后一次重新启动。@man0v是否有指向任何简单工作处理程序示例的链接?我试图找出答案,只是因为语法错误而浪费时间,对实际发生的事情没有一个好的心理模型。这实际上是我目前的答案,但我觉得这不是一个好的答案,因为这涉及到没有将上次重新启动标记为重新启动,也不想将解决方案转移到它周围。这听起来更像是对处理程序进行重构,角色和处理程序是最佳实践。
tasks:
  - name: task1
    ...
  - name: task2
    ...
  - name: task3
    ...
  - name: Reboot machine
    become: yes
    reboot:
- import_playbook: pb1.yml
- import_playbook: pb2.yml
- import_playbook: pb3.yml
...