O'Reilly logo

Salt Essentials by Thomas Hatch, Craig Sebenik

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Chapter 8. Extending Salt: Part II

We saw earlier how to extend Salt via custom states, modules, and grains. But we can customize so much more. In this chapter, we will look at the basics of what is available with the Python client API. With this API, you can write standalone Python scripts that call into the Salt infrastructure. We will also touch on how to write custom runners.

Python Client API

The Python client API allows you to interact with the Salt code at a much deeper level than we have seen thus far. There are many ways to import the Salt code into your own Python scripts. However, using the client API will make sure the infrastructure is called properly. For example, the client API will make sure access control lists (ACLs) are not bypassed. We are going to discuss how to write scripts to mimic behavior on both the master (using the LocalClient API) and the minion (using the Caller API). First, though, we need to mention the configuration calls.

Reading Configuration Data on a Master and Minion

There are two primary methods for reading configuration data: client_config and minion_config. The latter should be obvious; it’s used on a minion to parse the minion’s configuration files. The former, client_config, is actually for reading and parsing the configuration files for the Salt master. They both return dictionaries. They are not always required, but using them will give you more insight into what data the other APIs need.

As we mentioned, the client_config is actually ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required