【发布时间】:2020-07-06 21:12:25
【问题描述】:
我想运行一个安装服务的 ansible playbook,如果自上次运行后发生任何变化(或多或少是 ansible 处理程序的规范用例),则重新启动它。
但是我想要一个不同的并行度来安装而不是重新启动:我想一次安装在所有主机上但是,如果“service-restart”处理程序被调用,我希望它运行一次在 X 个主机上。
我知道这对于具有不同serial 值的不同剧本是可能的。但是如果我走这条路,我看不到如何使用处理程序。而且我买不起像2 这样具有serial 值的单一剧本,因为大多数时候该服务不会有任何改变。
处理程序可以跨越多个播放吗?或者有没有其他方法可以在没有黑客的情况下做到这一点?
【问题讨论】:
-
您似乎将
serial放入了处理程序重启任务本身。你试过吗? -
文档似乎表明
serial只能在播放级别使用。但这绝对值得一试。我会告诉你的。 -
如果您查看文档中的
Rolling Updates部分,您会看到其中包含带有serial参数的任务示例... -
你是在说这个页面docs.ansible.com/playbooks_delegation.html吗?据我所知,
serial属性仅出现在播放级别(并且仅记录了以这种方式工作)。还是我错过了什么? -
@Mxx 遗憾的是,我认为这回答了您的初始和后续建议:
ERROR: serial is not a legal parameter in an Ansible task or handler。不过还是谢谢。