”;
Salt provides programmatic access to all of its commands. Salt provides different modules for every section of the Salt system. Let us learn the basics of the python API and about how to run the basic salt commands in this chapter.
Configuration
The salt.config module is used to access Salt configuration details.
import salt.config opts = salt.config.client_config(''/etc/salt/master'')
Here, the client_config reads the salt configuration file and returns the configuration details as dictionary.
Loader
The salt.loader module is used to load each modules in Salt such as grains, minions, etc.
import salt.loader opts = salt.config.minion_config(''/etc/salt/minion'') grains = salt.loader.grains(opts)
Here, grains reads the details of the grains in the Salt system and returns it.
Client Module
The salt.client module is used to execute salt, salt-call and the salt-SSH commands programmatically.
The most important python classes are as follows −
- salt.client.LocalClient
- salt.client.Caller
- salt.client.ssh.client.SSHClient
The main function provided by most of the client module is cmd. This function wraps the CLI options and executes it, which is similar to the command line and returns the results as python data structures.
LocalClient
The LocalClient is used to send commands from the master to the salt minions and return the results to the master.
import salt.client local = salt.client.LocalClient() local.cmd(''*'', ''test.ping'')
It will produce the following output −
{''minion1'': True, ''minion2'': True }
Caller
The Caller is used to run salt-call programmatically and return the results.
import salt.client caller = salt.client.Caller() caller.cmd(''test.ping'')
It will produce the following output −
True
SSHClient
The SSHCient is used to run the salt-ssh programmatically and return the results.
import salt.client.ssh.client ssh = salt.client.ssh.client.SSHClient() ssh.cmd(''*'', ''test.ping'')
It will produce the following output −
{''minion1'': True, ''minion2'': True }
CloudClient
The salt.cloud module is used to execute the salt-cloud commands programmatically.
client = salt.cloud.CloudClient(path = ''/etc/salt/cloud'')
Cloud module provides functions to create VMs (create), to destroy VMs (destroy), list images provided by a cloud provider (list_images), list locations of a cloud provider (list_locations), list machine sizes of a cloud provider (list_sizes), etc.
”;