【问题标题】:How to store a particular node from an output of a state.sls file in a variable for SaltStack如何将 state.sls 文件输出中的特定节点存储在 SaltStack 的变量中
【发布时间】:2022-08-08 23:40:26
【问题描述】:

我正在做一个需要检查服务状态的项目,让我们在多台(超过 500 台机器)Windows 服务器上将其称为 RunningService。我们在部署中广泛使用 Saltstack。 我可以使用以下代码检查我的服务状态

status_ser:
  module.run:
    - name: service.status
    - m_name: RunningService

我通过此特定代码运行的响应如下:

----------
          ID: status_ser
    Function: module.run
        Name: service.status
      **Result: True**
     Comment: Module function service.status executed
     Started: 16:20:58.295237
    Duration: 78.124 ms
     Changes:
              ----------
              ret:
                  True

Summary for minion-3
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1
Total run time:  78.124 ms

但是,我只想要结果部分(可能是真的或者错误的) 在更大的代码中可能保存在变量中。然后我会验证

if var == \'False\'
  then start RunningService
else
  do nothing
endif

我怎样才能只得到服务的结果为 True 或 False? 或者一个更通用的问题是如何将输出的一部分存储为变量或输入到其他东西?

提前致谢。

    标签: salt-stack


    【解决方案1】:

    要将命令或 salt 模块的输出存储为变量(简短的回答)是在 Jinja 表达式中使用 set。喜欢:

    {% set service_status = salt['service.status']('RunningService') %}
    

    TrueFalse 现在将存储在 service_status 中。这可以在条件语句中使用。以您的问题为例开始服务:

    {% if not service_status %}
    start_service:
      module.run:
        - service.start:
            - name: RunningService
    {% endif %}
    

    但是,有几件事情需要考虑:

    1. 所有Jinja 表达式在状态运行之前进行评估
    2. Saltstack 可以更好地用于定义服务的状态,即如果您希望某个特定的服务正在运行,只需定义它即可。

      因此,最好使用 Salt 状态 service,它会在内部进行此类检查。那么这就是您需要的所有代码。

      start_service:
        service.running:
          - name: RunningService
      

      现在,无论何时运行此状态。如果服务没有运行,它将启动,如果它已经运行,则什么也不做。

    【讨论】:

      【解决方案2】:

      如何使用带有通配符的服务名称,因为服务名称以特定名称开头并且包含软件版本。与 server-1 中一样,服务名称为 RunningService14.0,而在 server-2 中,服务名称为 RunningService14.0,依此类推。如何动态传递服务名称。任何建议。

      启动服务:

      • service.start:
        • 名称:RunningServ*

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多