Go to file
R Tyler Croy 56683f2288 Rename the zap-cli package to allow for publishing to crates.io 2021-01-01 10:25:27 -08:00
cli Rename the zap-cli package to allow for publishing to crates.io 2021-01-01 10:25:27 -08:00
examples Starting to put together a little FreeBSD-based web application example 2020-12-31 22:43:18 -08:00
model Add necessary details to publish to crates.io 2021-01-01 10:19:22 -08:00
tasks Add some comments to all the existing defined ztasks 2021-01-01 10:08:17 -08:00
.gitignore
Cargo.lock Rename the zap-cli package to allow for publishing to crates.io 2021-01-01 10:25:27 -08:00
Cargo.toml Refactor the parser package into a "model" package which is more accurate 2021-01-01 10:10:01 -08:00
LICENSE.txt
README.adoc Support the `unless` parameter on a task to run a little script for idempotency 2020-12-31 22:42:23 -08:00
inventory.yml

README.adoc

<html lang="en"> <head> </head>

Zap

A simple cross-platform orchestration and configuration management tool.

The main goal for Zap is to a simple mechanism for managing groups of computers with varying configurations and needs. Zap accomplishes this with "tasks" which can be composed into "plans" or run standalone. These tasks can be collections of scripts or a statically linked binaries, which will be pushed to the target machine(s) and executed.

Zap borrows ideas from Puppet Bolt. but leaves some of the Puppet-based legacy from Bolt behind.

Examples

 zap task tasks/echo.ztask -p msg="Hello World" -t zap-freebsd
Running task with: TaskOpts { task: "tasks/echo.ztask", parameter: ["msg=Hello World"], targets: "zap-freebsd" }
Hello World
 zap plan ./examples/basic.zplan -t zap-freebsd
Running plan with: PlanOpts { plan: "./examples/basic.zplan", targets: "zap-freebsd" }
Hello from the wonderful world of zplans!
This is nice

Task

A task is a simple container of some form of execution. Typically this will be a wrapped shell/ruby/python script which does some specific piece of functionality. Tasks may also take parameters, which allow for some pluggability of new values.

Tasks have some default parameters that should not be overridden in new task definitions.

Table 1. Built-in Parameters
Parameter Description

provides

A relative or absolute path to a file that the task provides. If the file exists, then the task will be skipped.

unless

A script snippet which can determine whether the task should execute. A non-zero exit status causes the task to execute.

echo.ztask
task Echo {
    parameters {
        msg {
            required = true
            help = 'String to echo back to the client'
            type = string
        }
    }

    script {
        inline = 'echo {{msg}}'
    }
}

Plan

A plan is a collection of tasks which can be applied to a target or targets. Tasks are referenced with the parameters that should be passed into them, and will be executed in the order that they are defined.

simple.zplan
task 'tasks/echo.ztask' {
    msg = 'Hello from the wonderful world of zplans!'
}

task 'tasks/echo.ztask' {
    msg = 'This is nice'
}
</html>