https://github.com/canonical/pebble
Take control of your internal daemons!
https://github.com/canonical/pebble
Last synced: 9 months ago
JSON representation
Take control of your internal daemons!
- Host: GitHub
- URL: https://github.com/canonical/pebble
- Owner: canonical
- License: gpl-3.0
- Created: 2020-11-10T13:44:30.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-05-02T14:47:05.000Z (over 1 year ago)
- Last Synced: 2024-05-02T20:17:46.408Z (over 1 year ago)
- Language: Go
- Homepage:
- Size: 1.24 MB
- Stars: 133
- Watchers: 11
- Forks: 50
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# The Pebble service manager
[](https://snapcraft.io/pebble)
[](https://github.com/canonical/pebble/actions/workflows/snap.yml)
[](https://github.com/canonical/pebble/actions/workflows/binaries.yml)
[](https://github.com/canonical/pebble/actions/workflows/tests.yml)
_Take control of your internal daemons!_
**Pebble** is a lightweight Linux service manager that helps you orchestrate a set of local processes as an organised set. It resembles well-known tools such as _supervisord_, _runit_, or _s6_, in that it can easily manage non-system processes independently from the system services. However, it was designed with unique features such as layered configuration and an HTTP API that help with more specific use cases.
Pebble's key features:
- [Layer](https://documentation.ubuntu.com/pebble/reference/layer-specification/)-based configuration
- Service [dependencies](https://documentation.ubuntu.com/pebble/explanation/service-dependencies/)
- Service [logs](https://documentation.ubuntu.com/pebble/reference/cli-commands/#logs) and [log forwarding](https://documentation.ubuntu.com/pebble/reference/log-forwarding/)
- [Health checks](https://documentation.ubuntu.com/pebble/reference/health-checks/)
- [Notices](https://documentation.ubuntu.com/pebble/reference/notices/) (aggregated events)
- [Identities](https://documentation.ubuntu.com/pebble/how-to/manage-identities/)
- Can be used in [virtual machines and containers](https://documentation.ubuntu.com/pebble/how-to/manage-a-remote-system/)
- [CLI commands](https://documentation.ubuntu.com/pebble/reference/cli-commands/)
- [HTTP API](https://documentation.ubuntu.com/pebble/explanation/api-and-clients/) with a [Go client](https://pkg.go.dev/github.com/canonical/pebble/client) and a [Python client](https://github.com/canonical/operator/blob/main/ops/pebble.py)
## Quick start
At any Linux shell:
```bash
go install github.com/canonical/pebble/cmd/pebble@latest
mkdir -p ~/.config/pebble/layers
export PEBBLE=$HOME/.config/pebble
echo """\
services:
demo-service:
override: replace
command: sleep 1000
startup: enabled
""" > $PEBBLE/layers/001-demo-service.yaml
pebble run
```
Read more about Pebble's general model [here](https://documentation.ubuntu.com/pebble/explanation/general-model/).
For a hands-on introduction to Pebble, we recommend going through the [tutorial](https://documentation.ubuntu.com/pebble/tutorial/getting-started/).
## Getting help
To get the most out of Pebble, we recommend starting with the [documentation](https://documentation.ubuntu.com/pebble/).
You can [create an issue](https://github.com/canonical/pebble/issues/new) and we will help!
## Hacking and development
See [HACKING.md](HACKING.md) for information on how to run and hack on the Pebble codebase during development. In short, use `go run ./cmd/pebble`.
## Contributing
We welcome quality external contributions. We have good unit tests for much of the code, and a thorough code review process. Please note that unless it's a trivial fix, it's generally worth opening an issue to discuss before submitting a pull request.
Before you contribute a pull request you should sign the [Canonical contributor agreement](https://ubuntu.com/legal/contributors) -- it's the easiest way for you to give us permission to use your contributions.