You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible编写服务故障自动重启脚本执行报错问题咨询

问题排查

你的Playbook执行失败有两个核心语法错误,还有一处逻辑冗余:

  • 重复定义tasks键:同一个play层级下写了两次tasks,YAML语法中字典的键唯一,Ansible解析时会直接丢弃第一个tasks下的所有服务检查逻辑,只读取最后一个tasks的内容,这也是警告信息found a duplicate dict key (tasks)的来源。
  • 模块参数误用:failure_actions是win_service模块的内置配置参数,不是独立的Ansible任务模块。你把它作为单独任务写,Ansible找不到对应的合法模块,就会抛出unexpected parameter type in action的错误。
  • 逻辑冗余:win_service模块本身是幂等的,当你配置state: started时,模块会自动检查服务运行状态,服务未运行时会直接执行启动操作,不需要额外编写“检查状态再启动”的判断逻辑。
修正后的Playbook
---
- hosts: all
  tasks:
    - name: 确保AD核心服务运行并配置失败自动重启策略
      become: yes
      become_method: runas
      win_service:
        name: "{{ item }}"
        start_mode: auto
        state: started
        failure_actions:
          - type: restart
            delay_ms: 5000
      loop:
        - NTDS
        - ADWS
        - Dfs
        - DFSR
        - DNS
        - Kdc
改动说明
  • 删除了重复的tasks定义,所有任务统一放在同一个tasks列表下
  • 将failure_actions参数直接合并到win_service模块配置中,遍历每个服务时会同时完成启动类型校验、服务状态检查拉起、失败恢复策略配置三个动作
  • 补充了become: yes参数:Windows环境使用runas提权时必须配置该参数,否则会因权限不足导致服务操作失败
  • 执行时如果服务已经处于正常运行状态、配置符合要求,模块不会做任何变更,满足幂等性要求。

内容的提问来源于stack exchange,提问作者steh88

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:18:48