首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >盐组织靶向

盐组织靶向
EN

Stack Overflow用户
提问于 2015-12-04 05:43:43
回答 1查看 946关注 0票数 0

我使用反应堆捕捉某些事件,我在/etc/salt/ reactor.conf中的看起来如下:

代码语言:javascript
复制
reactor:
  - 'health/agent/update':
    - salt://health-checks/reactor.sls

在reactor.sls中-我想从代理获得一些数据,并且只对某些盐仆从(而不是盐主本身)运行一个特定的SLS。因此,我与tgt一起使用了下面的块,以确保它只运行在那些仆从上。基于文档在…,这看起来很好。在update_server.sls中,我生成一些托管文件。

代码语言:javascript
复制
{% set event_data = data.data %}
{% set target_server_name = data.data.server_name %}
'update server states':
  runner.state.orchestrate:
    - tgt: {{ target_server_name }}
    - mods: health-checks/update_server
    - pillar:
        event_data: {{ event_data }}

但是托管文件只在盐主上生成,而不是在任何tgt分支上生成。我遗漏了什么?什么是正确的方式来运行一个sls的目标仆从和产生预期的结果?

我也尝试使用salt.state,但这会导致错误,代码

代码语言:javascript
复制
 salt.state:
    - tgt: '*{{ target_server_name }}*'

和错误:

代码语言:javascript
复制
2015-12-04 06:37:24,467 [salt.utils.process][INFO    ][17924] Process <class 'salt.utils.reactor.Reactor'> (17989) died with exit status None, restarting...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 10:02:51

我想我意识到了我所犯的错误。

首先,“Runner”应该用于您需要在主人而不是远程仆从上做的事情,正如Runner文档在…中明确指出的那样。

Salt runners work similarly to Salt execution modules however they execute on the Salt master itself instead of remote Salt minions.

对我有用的是在这里:

代码语言:javascript
复制
'update server states':
  local.state.sls:
    - tgt: '*{{ target_server_name }}*'
    - arg: 
      - 'health-checks/update_server'
    - kwarg:
        pillar:
          event_data: {{ event_data }}

这将只在由update_server.sls过滤的服务器上运行tgt文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34081680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档