【问题标题】:How is the correct syntax/call to get the sls-file working - salt使 sls 文件正常工作的正确语法/调用如何 - salt
【发布时间】:2019-08-08 09:34:48
【问题描述】:

我正在尝试构建一个 reactor sls 文件,该文件在事件发生时开始运行。

sls文件的内容应该是如下cli命令:

sudo salt minion git.add /srv/salt .
sudo salt minion git.commit /srv/salt test
sudo salt minion git.push /srv/salt origin master identity=/home/autogit/.ssh/id_rsa

如果我运行由反应堆触发的代码波纹管。我收到以下错误消息。

[DEBUG   ] Reactor is populating module client cache
[ERROR   ] An un-handled exception from the multiprocessing process 'Reactor-9:1' was caught:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/salt/utils/process.py", line 765, in _run
    return self._original_run()
  File "/usr/lib/python2.7/dist-packages/salt/utils/reactor.py", line 271, in run
    self.call_reactions(chunks)
  File "/usr/lib/python2.7/dist-packages/salt/utils/reactor.py", line 228, in call_reactions
    self.wrap.run(chunk)
  File "/usr/lib/python2.7/dist-packages/salt/utils/reactor.py", line 330, in run
    self.populate_client_cache(low)
  File "/usr/lib/python2.7/dist-packages/salt/utils/reactor.py", line 324, in populate_client_cache
    self.reaction_class[reaction_type](self.opts['conf_file'])
KeyError: u'module'
[CRITICAL] Engine 'reactor' could not be started!

我尝试了不同的语法(旧样式和新样式),但无法弄清楚问题所在。总是得到一个 KeyError: u'module' or u'git'。

还尝试使用 runner 功能在 master 本地运行它。

git pull:
  module.run:
    - git.pull:
      - cwd: /srv/salt
      - remote: git@git.xyz.com:user/sbt.git
      - identity: /home/autogit/.ssh/id_rsa
    - git.add:
      - cwd: /srv/salt
      - filename: .
    - git.commit:
      - cwd: /srv/salt
      - remote: git@git.xyz.com:user/sbt.git
    - git.push:
      - cwd: /srv/salt
      - remote: git@git.xyz.com:user/sbt.git
      - identity: /home/autogit/.ssh/id_rsa



salt --versions-report
Salt Version:
           Salt: 2019.2.0

Dependency Versions:
           cffi: Not Installed
       cherrypy: unknown
       dateutil: 2.6.1
      docker-py: Not Installed
          gitdb: 2.0.3
      gitpython: 2.1.8
          ioflo: Not Installed
         Jinja2: 2.10
        libgit2: Not Installed
        libnacl: Not Installed
       M2Crypto: Not Installed
           Mako: 1.0.7
   msgpack-pure: Not Installed
 msgpack-python: 0.5.6
   mysql-python: Not Installed
      pycparser: Not Installed
       pycrypto: 2.6.1
   pycryptodome: Not Installed
         pygit2: Not Installed
         Python: 2.7.15rc1 (default, Nov 12 2018, 14:31:15)
   python-gnupg: 0.4.1
         PyYAML: 3.12
          PyZMQ: 16.0.2
           RAET: Not Installed
          smmap: 2.0.3
        timelib: Not Installed
        Tornado: 4.5.3
            ZMQ: 4.2.5

System Versions:
           dist: Ubuntu 18.04 bionic
         locale: UTF-8
        machine: x86_64
        release: 4.15.0-46-generic
         system: Linux
        version: Ubuntu 18.04 bionic

由于我对 Salt 很陌生,希望你能给我一个提示我做错了什么:

【问题讨论】:

    标签: module yaml salt-stack salt reactor


    【解决方案1】:

    您没有提供主配置。

    1. 关于module.run 混淆:添加您的设置(从小到大,因为我不知道您的用例)
    use_superseded:
      - module.run
    

    这将启用您的语法,这里有更多关于此的文档:https://docs.saltstack.com/en/latest/ref/states/all/salt.states.module.html#salt.states.module.run
    一般来说:您正在从 state modules 仅允许的地方执行 execution modules(术语 module 在 salt 中被过度使用......)

    1. 您没有提供完整的主配置。 Reactor 需要专门的配置来匹配事件到 sls 文件: https://docs.saltstack.com/en/latest/ref/configuration/master.html#master-reactor-settings

    您还可以查看我前段时间写的关于事件和反应器的文档: https://github.com/kiemlicz/util/wiki/Salt-Events-and-Reactor

    假设您已在主配置中配置了 events-to-sls-files-matching,您提供的 sls:

    git pull:
      module.run:
        - git.pull:
          - cwd: /srv/salt
          - remote: git@git.xyz.com:user/
    ...
    

    不会工作。
    请注意,Salt Master 上会发生反应,因此反应 sls 文件需要提供反应类型(本地、跑步者等),因为它不再是“一个小兵的视图”,而是可能有大量小兵! 首先创建 runner 反应类型(它委托给一些编排 sls 文件,该文件将包含用(我认为)salt.function 包装的逻辑)

    通过上述 github 链接帮助您自己尝试解释 Reactor。
    参考官方文档:https://docs.saltstack.com/en/latest/topics/reactor/index.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多