Skip to main content

Salt Extension for JumpCloud

Manage a JumpCloud organization from Salt: users, devices, the groups that bind them together, and the policies that ride on those groups. Ships an execution module, a runner and a set of states, so a directory can live in Git and be reconciled rather than clicked together in a console.

engineering:
  jumpcloud.usergroup_present:
    - description: Platform engineering
    - members:
      - jdoe
      - asmith
    - associations:
      - type: system_group
        name: linux-servers

Status

Early. The API surface covered is deliberately narrower than JumpCloud's full API: 13 collections across the v1 and v2 Console APIs, chosen as the part worth managing declaratively. Everything else is reachable through jumpcloud.query. See the usage guide.

Requires Salt 3006 or newer.

Design notes

No SDK. JumpCloud's Python SDK (jcapi-python) is not published to PyPI, so a package depending on it could not itself be published to PyPI, and its last commit was in 2019. The official Go CLI (jc) is actively developed but is a community-support tool with a release most days, which is the wrong thing for a state module to parse. This extension talks to the REST API directly through salt.utils.http, which is also what saltext-wanguard does.

The API model is verified against the vendor spec in CI. JumpCloud publishes both Console OpenAPI documents without authentication, so a CI job fetches them and checks every claim this extension makes: that a collection exists on the API version claimed, that the operations offered are actually available, and that every declared association target still matches the vendor's own schema. A JumpCloud-side change surfaces as a red pipeline rather than as a 400 in somebody's state run.

v1 and v2 differences are handled, not hidden badly. v1 keys objects on _id and wraps collections in an envelope; v2 keys on id and returns bare arrays. A user is created at /api/systemusers but its bindings live at /api/v2/users. Callers say systemusers and the client routes each call to whichever API serves it.

Branching

master is the release branch. Work happens on topic branches merged via merge request. Tags matching v* enable a manual PyPI publish job.

Security

If you discover a security vulnerability, please refer to Salt's security guide.

User Documentation

For setup and usage instructions, please refer to the User Documentation.

Contributing

The saltext-jumpcloud project welcomes contributions from anyone!

The Salt Extensions guide provides comprehensive instructions on all aspects of Salt extension development, including writing tests, running tests, writing documentation and rendering the docs.

Quickstart

To get started contributing, first clone this repository (or your fork):

# Clone the repo
git clone --origin upstream git@gitlab.com:ggiesen/saltext-jumpcloud.git

# Change to the repo dir
cd saltext-jumpcloud

Automatic

If you have installed direnv, copying the included .envrc.example to .envrc and allowing it to run ensures a proper development environment is present and the virtual environment is active.

Without direnv, you can still run the automation explicitly:

make dev  # or python3 tools/initialize.py
source .venv/bin/activate

Manual

Please follow the first steps, skipping the repository initialization and first commit.

Ways to contribute

Contributions come in many forms, and they’re all valuable! Here are some ways you can help without writing code:

  • Documentation: Especially examples showing how to use this project to solve specific problems.
  • Triaging issues: Help manage issues.

You can also contribute by:

  • Writing blog posts
  • Sharing your experiences using Salt + JumpCloud on social media
  • Giving talks at conferences
  • Publishing videos
  • Engaging in IRC, Discord or email groups

Any of these things are super valuable to our community, and we sincerely appreciate every contribution!

Metadata

Release files for saltext.jumpcloud 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for saltext.jumpcloud 0.1.0
File Size Uploaded Provenance Actions
saltext_jumpcloud-0.1.0.tar.gz 127.7 kB Without provenance Details for saltext_jumpcloud-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for saltext.jumpcloud 0.1.0
File Interpreter ABI Platform Actions
saltext_jumpcloud-0.1.0-py2.py3-none-any.whl Python 2, Python 3 none any Details for saltext_jumpcloud-0.1.0-py2.py3-none-any.whl

Total release size: 171.8 kB

Release files / saltext_jumpcloud-0.1.0.tar.gz

Download URL saltext_jumpcloud-0.1.0.tar.gz
Size 127.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e5a7c596b44f4bba9a6bdf9ee01f9302e0d90a9a08a5012c30eb42dea5459484
BLAKE2b-256 checksum
How to use checksums
6f9a43413289e60dadada25cf88227bd31a0330e22dab95cf7a60c9b46e2afa8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.13

Release files / saltext_jumpcloud-0.1.0-py2.py3-none-any.whl

Download URL saltext_jumpcloud-0.1.0-py2.py3-none-any.whl
Size 44.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
4b43a2df7af15c2e2b3908833c5b70a919553712a6dc0512f78cb46d61ed6fe5
BLAKE2b-256 checksum
How to use checksums
bac0f8e077d528b06913c0c477bdba35062a58bf2c330d88f93b5734fe6dc8ae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.12.13

Security for saltext.jumpcloud 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page