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.
- I can port any existing upstream patch (that is not overly invasive) to an older Salt version
- I can help integrate a patch into your existing Salt Minion bootstrap process
- It usually takes just a couple of hours to port a patch. A couple of patch examples 1, 2, 3, 4, 5
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.
Related work
- Setting up best Salt development practices (automated tests, linter, etc)
- Cloud integrations - bootstrapping Salt minions on new VMs (including Windows), naming cloud minions, managing minion keys, SQS based orchestrations, Terraform, etc
- Dockerizing Salt Master
- Porting existing modules to Python 3
- Integrating custom modules (including 3-rd party module dependencies) into your existing Salt Minion bootstrap process
Other technologies I like
- Terraform
- Django
- Django Rest Framework
- PostgreSQL
- Serverless architectures (using Python)
Various details
- I’m located in Siberia, Russia
- All engagements are remote
- I focus on infrastructure automation, related development/integration work and improving the processes, not on doing operations on your behalf
- I mostly work with EU-based companies, but can work with US-based ones if you are flexible about the meeting hours
- My timezone is UTC+7, and it also nicely fits Asia, Australia, New Zealand, etc.
- My hourly rate is 100 EUR, can be a bit lower for long-term contracts
- My hourly rate for Russia, Belarus, Kazakhstan, Uzbekistan, Armenia, Georgia, etc. is 6000 RUB
- It is also possible to hire me through an EU-based consultancy firm that works with Salt experts, please contact me for an intro
- To start, please email me at