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.
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.
There are two primary methods for reading configuration data:
The latter should be obvious; it’s used on a minion to parse
the minion’s configuration files.
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 ...