Task¶
Each service embeds its own scheduling table. Some scheduled tasks are automatically configured:
- data synchronization
- resource information push to the collector
- service configuration push to the collector
- service and resource status push to the collector
- compliance run
Other tasks can be defined by the users.
Features¶
- tasks don't need to be added to the system's scheduler, thus can be provisioned along with the service
- tasks follow the service relocations
- tasks can can be disabled, scoped, unscheduled
- tasks runs can be conditionned by a specific service state. Only run on the active instance of a failover for example
- tasks can be run manually
- tasks can run impersonated as a specified user
- tasks can have cron-style schedule, anacron-style, networker-style schedule definition
- dangerous tasks can ask for a confirmation
- task commands support shell lexical (shlex) format
- tasks support the requires keyword, to allow runs only when instance resources are in the specified states.
Typical Use-Cases¶
- embed scheduled tasks in a failover service to not have to swith-over the cronjobs
- embed complex commands as scheduled or unschedule tasks to ease and secure their use (ex: backups of dockerized databases, run a dockerized mysql client with predefinited args)
Operations¶
Print a Service Tasks and their Scheduling Status¶
$ om testmd print schedule
action last run config parameter schedule definition
------ -------- ---------------- -------------------
...
task#0 - task#0.schedule -
task#1 2016-11-28 04:01:00 task#1.schedule @10
Manually Run a Task¶
All service tasks
$ om testmd run
One specific task
$ om testmd run --rid task#0
All tasks with the backup tag
$ om testmd run --rid task --tags backup
Configuration¶
[task#0]
command = id -u && /bin/true
user = admin
The complete reference is available here.
Confirmation¶
Task confirmation is activated by the confirmation
keyword.
[task#0]
command = /bin/true
confirmation = true
A no
response to the confirmation prompt aborts the run with a 1
returncode.
$ om testmd run --rid task#0
This task run requires confirmation.
Please make sure you fully understand its role and effects before confirming the run.
Do you really want to run task#0 (yes/no) > no
11:53:08,758 ERROR 'run' action stopped on execution error: run aborted
If no responsse is provided in 30 seconds, the run is arborted with a 1
returncode.
$ sudo testmd run
This task run requires confirmation.
Please make sure you fully understand its role and effects before confirming the run.
Do you really want to run task#0 (yes/no) >
11:30:36,059 ERROR 'run' action stopped on execution error: timeout waiting for confirmation
A yes
response to the confirmation prompt unblocks the run and the command
returncode is propagated.
$ sudo testmd run
This task run requires confirmation.
Please make sure you fully understand its role and effects before confirming the run.
Do you really want to run task#0 (yes/no) > yes
11:29:36,973 task#0 INFO run confirmed
11:29:36,976 task#0 INFO /bin/true