Каков правильный синтаксис/вызов для работы 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: [email protected]:user/sbt.git
      - identity: /home/autogit/.ssh/id_rsa
    - git.add:
      - cwd: /srv/salt
      - filename: .
    - git.commit:
      - cwd: /srv/salt
      - remote: [email protected]:user/sbt.git
    - git.push:
      - cwd: /srv/salt
      - remote: [email protected]: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, надеюсь, вы подскажете, что я делаю неправильно:


person Matthias    schedule 08.08.2019    source источник


Ответы (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< br> В общем: вы выполняете модули выполнения из того места, где разрешены только модули состояния (термин модуль сильно используется в соли...)

  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

Предполагая, что вы настроили сопоставление событий и sls-файлов в основной конфигурации, предоставленный вами sls:

git pull:
  module.run:
    - git.pull:
      - cwd: /srv/salt
      - remote: [email protected]:user/
...

не будет работать.
Имейте в виду, что реакция происходит на Salt Master, поэтому в sls-файле реакции должен быть указан тип реакции (локальный, бегун и т. д.), поскольку это больше не «просмотр одного миньона», а возможно, множество миньонов!
Сначала создайте тип реакции runner (который делегирует какой-либо файл оркестрации sls, который будет содержать вашу логику, обернутую (я думаю) salt.function)

Помогите себе с вышеупомянутой ссылкой github на мою попытку объяснить Reactor.
См. также официальный документ: https://docs.saltstack.com/en/latest/topics/reactor/index.html

person lakier    schedule 17.08.2019