Salt Engines

New in version 2015.8.0.

Salt Engines are long-running, external system processes that leverage Salt.

  • Engines have access to Salt configuration, execution modules, and runners (__opts__, __salt__, and __runners__).

  • Engines are executed in a separate process that is monitored by Salt. If a Salt engine stops, it is restarted automatically.

  • Engines can run on the Salt master and on Salt minions.

Salt engines enhance and replace the external processes functionality.

Configuration

Salt engines are configured under an engines top-level section in your Salt master or Salt minion configuration. Provide a list of engines and parameters under this section.

engines:
  - logstash:
      host: log.my_network.com
      port: 5959
      proto: tcp

New in version 3000.

Multiple copies of a particular Salt engine can be configured by including the engine_module parameter in the engine configuration.

engines:
  - production_logstash:
      host: production_log.my_network.com
      port: 5959
      proto: tcp
      engine_module: logstash
  - develop_logstash:
      host: develop_log.my_network.com
      port: 5959
      proto: tcp
      engine_module: logstash

Salt engines must be in the Salt path, or you can add the engines_dirs option in your Salt master configuration with a list of directories under which Salt attempts to find Salt engines. This option should be formatted as a list of directories to search, such as:

engines_dirs:
  - /home/bob/engines

Writing an Engine

An example Salt engine, https://github.com/saltstack/salt/blob/master/salt/engines/test.py, is available in the Salt source. To develop an engine, the only requirement is that your module implement the start() function.

Table of Contents

Previous topic

Runners

Next topic

What is YAML and How To Use It