Custom Salt development services

Below, I'm offering a couple of custom Salt development services. If you didn't find a service to meet your needs, drop me a line at to discuss a custom engagement.

Execution and State modules

Have some specific thing to manage that is not handled well by any of the built-in Salt modules? Maybe a custom execution and/or state module can fit here. It is also easy to write small helper modules (examples: 1, 2, 3).

Beacon and Engine modules

Beacons are helpful when you need to monitor something on a target host and notify Salt about a change (but please do not abuse Salt as a monitoring system). See a simple beacon example.

Engines are Salt subprocesses that can run on a master or minion and call various parts of Salt. For example, saltext.vector is an engine I wrote that forwards Salt events to Vector.

Custom Grains

Custom grains allow you to collect some static information about a target system and use it later for targeting and in states.

Custom Pillar and SDB backends

Want to pull some data from an external system (CMDB, secrets, etc.)? Pillar and SDB modules are likely the best fit.

Runner modules

Runners run on a master and can be triggered manually through salt-run, from a reactor, orchestration, or even salt-api. They are useful to implement complex orchestration workflows and other kinds of master-side logic.

Salt-API and Salt-Pepper

Salt-API allows you to call any parts of Salt via HTTP. Salt-Pepper is a CLI and a Python library that simplifies working with Salt-API. These are commonly used to interact with a Salt Master remotely (without giving people SSH access) and for programmatic control of Salt from any in-house system. Very powerful!

Backporting existing patches

Let’s say you were bitten by a critical bug in Salt that has an existing but unreleased fix (even minor versions like 2019.2.1 or 3000.2 had some regressions). Even if it is released, maybe you are unable to upgrade to the latest bleeding-edge rolling release due to stability or compatibility issues (and fixes are no longer backported to previous stable versions unless they are CVEs). Or maybe you were wrongly expecting that a much-needed feature PR against the master branch would be included in the upcoming release but were told that it is feature frozen, and you have to wait another four months for the next one.

I can do all the low-level patching work, so you can focus on your infrastructure needs instead of fighting with various Salt bugs and upgrade cycles. It is possible to patch almost any part of Salt code, even if you run multiple versions simultaneously.

If you do not have a budget, I published a detailed guide that explains the process: Patching Salt Modules.

Open-source work

I can submit patches to Salt on your behalf, see the list of my past contributions to Salt.

With that said, these days it is recommended to use Salt Extensions to release new non-core modules.

Salt Grafana

An interesting open-source project I worked on is Salt Grafana. You can hire me to customize it for your specific needs.

Salt Extensions

I can port an existing module (including any of those 750 removed from Salt) into a Salt Extension and publish it on PyPI.

Other technologies I like

Various details