https://github.com/dz0ny/wrap2
Pid1 manager with templates, cron and logger
https://github.com/dz0ny/wrap2
docker pid1 procfile template
Last synced: 8 months ago
JSON representation
Pid1 manager with templates, cron and logger
- Host: GitHub
- URL: https://github.com/dz0ny/wrap2
- Owner: dz0ny
- Created: 2018-04-27T16:22:20.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2021-04-15T08:40:44.000Z (almost 5 years ago)
- Last Synced: 2025-01-26T16:14:17.687Z (about 1 year ago)
- Topics: docker, pid1, procfile, template
- Language: Go
- Homepage:
- Size: 67.4 KB
- Stars: 2
- Watchers: 5
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# wrap2
`wrap2` is process and configuration manager tailored for Docker with Kubernetes
environment.
It supports:
- Template generation from environ and secrets
- Managing multiple processes from single declaration file
- PID1 handling of system events
- Cron jobs
## Template
Format is based of Golang default template parser [see](https://golang.org/pkg/text/template/):
Extra functions:
- `env` > gets value from environment
- `k8s` > load value from secret Kubernetes volume mount
## CRON
Based of https://godoc.org/github.com/robfig/cron:
Predefined schedules:
```
Entry | Description | Equivalent To
----- | ----------- | -------------
@yearly (or @annually) | Run once a year, midnight, Jan. 1st | 0 0 0 1 1 *
@monthly | Run once a month, midnight, first of month | 0 0 0 1 * *
@weekly | Run once a week, midnight between Sat/Sun | 0 0 0 * * 0
@daily (or @midnight) | Run once a day, midnight | 0 0 0 * * *
@hourly | Run once an hour, beginning of hour | 0 0 * * * *
```
### Example:
```
ENV var example {{env "CUSTOM"}}
Secret var example {{k8s "secret"}}
{{if {{env "DEFINED_ENV_VARIABLE"}}}}
{{k8s "special_secret"}}
{{end}}
```
## Configuration
```toml
[pre_start]
cmd = "/bin/bash /pre_start"
user = "dz0ny"
[post_start]
cmd = "/bin/bash /post_start"
user = "dz0ny"
[[process]]
cmd = "nginx -V -E"
user = "www-data"
[process.config]
src = "source.tmpl"
out = "target.tmpl"
[process.config.data]
domain = "test.tld"
[[process]]
cmd = "php -v"
user = "www-data"
[process.config]
src = "source.tmpl"
out = "target.tmpl"
[process.enabled]
operator="EnvNotEqual"
# EnvEqual > env variable matches value
# EnvNotEqual > env variable does not match value
# EnvNotEndsWith > env variable does not end with value
# EnvEndsWith > env variable ends with value
# EnvNotStartsWith > env variable does not start with value
# EnvStartsWith > env variable starts with value
key= "KIND"
value="scaled"
[[process]]
cmd = "true -v"
[[cron]]
schedule = "@every 5s"
[cron.job]
cmd = "echo tick"
user = "www-data"
```
## Usage
```shell
$ ./wrap2-Linux-x86_64 -help 05/09/18 - 1:24 PM
Usage of ./wrap2-Linux-x86_64:
-config string
Location of the init file (default "/provision/init.toml")
```