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

如何为Ansible的service_facts模块声明服务名称变量

问题根因

你的vars段语法不符合Ansible规范,vars字段为键值对(字典)结构,不能使用列表项前缀-,这是导致变量未被正确识别、报VARIABLE NOT DEFINED的直接原因。


正确写法

1. Play级变量声明(和hosts、tasks平级,全局生效)

---
- name: Check service status
  hosts: all
  gather_facts: no
  vars:
    SERVICE: firewalld.service
  tasks:
    - name: Service Facts
      service_facts:

    - debug:
        var: ansible_facts.services[SERVICE]['status']

2. Task级变量声明(写在tasks段下对应任务中,仅对单个任务生效)

如果你需要将变量声明在tasks段下方,可以用task级变量的写法:

---
- name: Check service status
  hosts: all
  gather_facts: no
  tasks:
    - name: Service Facts
      service_facts:

    - name: Print service status
      vars:
        SERVICE: firewalld.service
      debug:
        var: ansible_facts.services[SERVICE]['status']

两种写法都可以正常解析SERVICE变量,获取到对应服务的状态值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 10:39:05