variables - 如何为 service_facts 声明一个变量
问题描述
下面是我使用 service_facts 模块检查服务状态的示例 ansible playbook,它运行良好。在这里我需要支持将服务名称定义为变量,但是当我定义它时给出错误,VARIABLE NOT DEFINED:
---
- name: Check service status
hosts: all
gather_facts: no
tasks:
- name: Service Facts
service_facts:
- debug:
var: ansible_facts.services['firewalld.service']['status']
我需要在任务下方的 vars 部分下声明“firewalld.service”,尝试了各种选项,但没有给出预期的输出。我尝试了以下选项,但它不起作用。
---
- 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']
解决方案
您可以使用条件运行一些任务,例如:
- name: Get service_facts
service_facts:
- name: Open some port
firewalld:
port: "{{ some_port }}/tcp"
permanent: yes
immediate: yes
offline: no
state: enabled
when:
- ansible_facts.services['firewalld.service'].state == 'running'
- ansible_facts.services['firewalld.service'].status == 'enabled'
推荐阅读
- azure-table-storage - 我在哪里可以找到存储表功能的实际实现?
- wordpress - 在域的子目录下托管两个不同的应用程序
- css - 减小屏幕尺寸时我的列重叠
- php - Laravel - 基于模型属性的 hasOne 关系
- c - 使用文件指针执行 C hangman 程序时出现分段错误
- python - 如何在python中管理并行目录中的导入
- python - 如何在具有条件的切片中的二维 Numpy 数组中的轴上应用累积总和到先前的值?
- haskell - JavaScript 中分组运算符 `()` 的功能是否与 Haskell 或其他编程语言不同?
- javascript - 如何将 javascript 文件链接到 express SPA 中的多个 html 文件之一?
- for-loop - 从 .txt 中获取多个字符串,然后一起输出