如何正确的语法/调用来使 sls 文件工作 - 盐



我正在尝试构建一个反应堆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'或u'git'。

还尝试了使用运行器功能在主服务器上本地运行它。

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 很陌生,希望你能给我一个提示,说明我做错了什么:

您没有提供主配置。

  1. 关于module.run混乱:添加您的设置(小黄人,也许要掌握,因为我不知道您的用例(
use_superseded:
- module.run

这将启用您的语法,更多关于此的文档在这里: https://docs.saltstack.com/en/latest/ref/states/all/salt.states.module.html#salt.states.module.run
一般来说:您正在从只允许状态模块的地方执行执行模块(术语模块在盐中被严重过度使用......

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

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

假设您已在主配置中配置了事件与 sls 文件匹配,则您提供的 sls:

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

行不通。
请注意,反应发生在Salt Master上,因此反应 sls 文件需要提供反应类型(局部、运行器等(,因为它不再是"一个小黄人的视图",而可能是大量小兵的视图!
首先创建运行器反应类型(它委托给一些编排 sls 文件,该文件将包含用(我认为(salt.function包装的逻辑(

通过前面提到的github链接来帮助自己解释Reactor的尝试。
也请参阅官方文档:https://docs.saltstack.com/en/latest/topics/reactor/index.html

最新更新