Ansible:如何启动已停止的服务?



我创建了一个剧本,使用ansible_facts.services重新启动多个RHEL服务器上的特定服务。重新启动的服务以一个特定的名称开始,在运行剧本的不同主机上可能存在,也可能不存在。

我已经正常工作了,但我还想添加一个后续任务,检查在前一个任务中重新启动的服务,以确保它们正在运行。任务只需要检查重新启动的服务,如果状态为stopped,则启动服务。

请推荐做这件事的最佳方法。如果可能的话,包括代码。谢谢!

这听起来很奇怪,但您可以尝试使用处理程序(对'更改'作出反应)并使用check_mode为模块确保状态。

尝试将'notify'添加到重启任务中,并将check_mode: true添加到处理程序中。Handler基本上是同一个systemd模块,但是不能修改。

…或者,如果您想测试您的基础设施,您可能喜欢testinfra (pytest-testinfra)作为检查基础设施的工具。

我理解你的问题,你想确保一个服务列表正在运行。

- name: Loop over all services and print name if not running
debug:
msg: "{{ item }}"
when:
- ansible_facts.services[item].state != 'running'
with_items: "{{ ansible_facts.services }}"

根据该示例,如果状态为stopped,则可以启动该服务。

进一步Q&

  • Ansible:如何禁用但运行的服务?
  • 如何只列出ansible_facts正在运行的服务?
  • 如何检查服务存在,并没有安装在服务器上使用service_facts模块在Ansible剧本?

最新更新