Skip to main content

CLI to access salt-api

Project description

salt-api-cli

Thin Python CLI for salt-api. Depends only on the standard library plus rich (readable output) and typeguard (JSON validation).

Logs in once with PAM credentials, caches the token in ~/.cache/salt-api-cli/token.json, then invokes salt-api's local, runner, and wheel clients over HTTPS. The cached token self-heals: it is refreshed proactively when its stored expiry has passed, and reactively when the server rejects it (e.g. after the salt-master container restarts and wipes its session store) — on rejection the CLI discards the token, logs in again, and retries the request once.

Commands come in two layers:

  • Low-level (local, runner, wheel) map directly to the salt-api clients and print raw JSON.
  • High-level (cmd, state, keys) wrap those clients and render readable, colorized output with rich.

Installation

pip install salt-api-cli

Configuration

Configuration is resolved in this order (later sources override earlier):

  1. ~/.saltapiclirc — INI file, [salt-api-cli] section
  2. Environment variables — SALT_API_URL, SALT_API_USER, SALT_API_PASS, SALT_API_INSECURE
  3. Command-line flags — --url, --user, --password, --insecure, --relogin, --no-token-cache

Example ~/.saltapiclirc:

[salt-api-cli]
url = https://salt.example.com
user = salt_api
password = secret
insecure = false

SALT_API_INSECURE=1 (or insecure = true in the config) skips TLS certificate verification.

Token cache control: --relogin ignores any cached token and logs in fresh (re-caching the new token); --no-token-cache neither reads nor writes the cache for that run; salt logout discards the cached token.

Usage

Low-level commands (raw JSON)

These map one-to-one to the salt-api clients and print the response verbatim as indented JSON.

# Local client — fan out to minions
salt local "*" test.ping
salt local "bml*" cmd.run whoami
salt local "bml1" cmd.run "Get-Date" shell=powershell

# Runner client (master-side: manage.status, jobs.list_jobs, ...)
salt runner manage.status
salt runner jobs.list_jobs

# Wheel client (master-side, low-level)
salt wheel key.list_all

High-level commands (readable, colorized)

These wrap the low-level clients and render their output with rich.

# Run a shell command — a live per-minion checklist while it runs, then
# one block per minion (exit code, stdout, stderr) and an ok/failed summary.
# Fired async (local_async + cmd.run_all) and polled via the runner, like
# `state`, so a slow or wide command never holds one long connection open.
salt cmd "bml*" hostname
salt cmd "bml1" "Get-Date" shell=powershell

# State runs — a colored table of states, one row each, with a summary.
# Driven by the local client + state.* functions.
salt state highstate "bml1"           # apply the highstate
salt state test "bml1"                # dry-run the highstate (forces test=True)
salt state apply "bml1" veyon         # apply specific sls module(s)
salt state apply "bml1" veyon.ldap test=True

# Key management — wraps the wheel client's key.* functions.
# `keys list` shows one colored panel per status (Accepted/Pending/Denied/Rejected).
salt keys list
salt keys accept "<id-or-glob>"
salt keys accept-all
salt keys reject "<id-or-glob>"
salt keys delete "<id-or-glob>"

Color and panels appear when writing to a terminal; output is plain when piped to a file or pager.

Any key=value argument is parsed as a kwarg to the salt function; anything else is positional.

You can also invoke the CLI as a module: python -m salt_api_cli ....

License

This project is licensed under the terms of the MIT license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

salt_api_cli-1.4.1.tar.gz (19.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

salt_api_cli-1.4.1-py3-none-any.whl (19.9 kB view details)

Uploaded Python 3

File details

Details for the file salt_api_cli-1.4.1.tar.gz.

File metadata

  • Download URL: salt_api_cli-1.4.1.tar.gz
  • Upload date:
  • Size: 19.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for salt_api_cli-1.4.1.tar.gz
Algorithm Hash digest
SHA256 fc63354bf1be88c1a6313eb492ad71661f7f31a9c7e78d3eeb7f5ae4ec2fd5aa
MD5 b3d19055ad9ab026882c570675c12fc6
BLAKE2b-256 5fafb1c4e29e1dd773e07547fce7f5ecc655033d7a8128ad316212a8c675a02f

See more details on using hashes here.

File details

Details for the file salt_api_cli-1.4.1-py3-none-any.whl.

File metadata

  • Download URL: salt_api_cli-1.4.1-py3-none-any.whl
  • Upload date:
  • Size: 19.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for salt_api_cli-1.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 10247787c0da8aa3db1a4e5d45541b6f4b84a43164ade6374d9ba70ce0e06029
MD5 729e6153d82911629da6963e83bbcbd0
BLAKE2b-256 6bee2f1362d3b88f06073a16c16f869977c9cdad2bb4d6fd88d2237cec705bfa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page