Configuration as Code software for managing Rancher projects, roletemplates, and projectroletemplatebindings in a GitOps workflow written in Rust. This project aims to simplify and standardize Rancher configuration management across environments, promoting automation, reproducibility, and version control.
- Declarative configuration for Rancher projects, roletemplates, and projectroletemplatebindings
- Support for GitOps workflows
- Integration with RK-API
- Enable infrastructure teams to manage Rancher environments as code
- Reduce configuration drift and manual operations
- Provide reusable components for automation pipelines
- Language: Rust 🦀
- API: Rancher v2.10
- Main dependencies: rancher_client, tokio, serde, tracing, anyhow, reqwest, json-patch
- Configuration Format: Y(A)ML/JSON/TOML
Note: Project is in early development. Expect rapid iteration and breaking changes.
- Rust (1.83 or higher recommended)
- Access to a Rancher environment with API token
To output logs make sure to set the environment variable RUST_LOG=none,shepherd=LOG_LEVEL
where LOG_LEVEL
is of (DEBUG
|TRACE
|INFO
)
Set the config for shepherd at ~/.config/shepherd/config.toml
Example:
rancher_config_path = "/Users/samuel/Documents/Kubernetes/rancher_config"
endpoint_url = "https://rancher.rd.localhost"
file_format = "json"
token = "token-kdlz3:random312random312random312r"
remote_git_url = "git@github.com:samuel/remote_config_store.git"
cluster_names = ["cluster1", "cluster2"]
# in seconds
loop_interval = 60
# in milliseconds
retry_delay = 500
full_sync = 5
branch = "main"
insecure = false
[auth_method]
SshKey = "/Users/samuel/.ssh/shepherd"
git clone https://github.com/DeusSeos/Shepherd.git
cd Shepherd
cargo build --release
Run the binary with ./target/release/shepherd
.
Download the binary from sheperd releases
Run the binary with ./shepherd
After cloning the repository run cargo build
to download the dependencies for Shepherd.