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!
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file saltext_jumpcloud-0.1.0.tar.gz.
File metadata
- Download URL: saltext_jumpcloud-0.1.0.tar.gz
- Upload date:
- Size: 127.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e5a7c596b44f4bba9a6bdf9ee01f9302e0d90a9a08a5012c30eb42dea5459484
|
|
| MD5 |
7cb31b847b6c0127ecce2123774eb6b3
|
|
| BLAKE2b-256 |
6f9a43413289e60dadada25cf88227bd31a0330e22dab95cf7a60c9b46e2afa8
|
File details
Details for the file saltext_jumpcloud-0.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: saltext_jumpcloud-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 44.1 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b43a2df7af15c2e2b3908833c5b70a919553712a6dc0512f78cb46d61ed6fe5
|
|
| MD5 |
13a654b8ac3ca5f2fcd5c02956399345
|
|
| BLAKE2b-256 |
bac0f8e077d528b06913c0c477bdba35062a58bf2c330d88f93b5734fe6dc8ae
|