Skip to content
Pid1 manager with templates, cron and logger
Go Makefile PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.github/workflows
docs
fixtures
version
.gitignore
.golinter
Makefile
README.md
command.go
command_test.go
config.go
config_test.go
cron.go
enabler.go
go.mod
go.sum
init.toml
log.php
logger.go
main.go
template.go
template_test.go

README.md

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:

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

[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]]
  cmd = "true -v"

[[cron]]
  schedule = "@every 5s"
  [cron.job]
    cmd = "echo tick"
    user = "www-data"

Usage

$ ./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")
You can’t perform that action at this time.