Duffle is the reference implementation of the CNAB specification. It
provides a comprehensive mapping of all features of the specification, serving
both as a tool to install and manage bundles, and author bundles at a low level.
The community has created implementations of the CNAB spec with
opinionated takes on authoring bundles. Some even use Duffle's
libraries to handle the CNAB implementation. If you want to make your own CNAB tooling, that is a great place to start!
Learn more about about CNAB and Duffle, check out our docs.
$ duffle init
==> The following new directories will be created:
/home/janedoe/.duffle
/home/janedoe/.duffle/bundles
/home/janedoe/.duffle/logs
/home/janedoe/.duffle/plugins
/home/janedoe/.duffle/claims
/home/janedoe/.duffle/credentials
==> The following new files will be created:
/home/janedoe/.duffle/repositories.json
==> Generating a new secret keyring at /home/janedoe/.duffle/secret.ring
==> Generating a new signing key with ID janedoe <janedoe@computer>
==> Generating a new public keyring at /home/janedoe/.duffle/public.ring
Build and install your first bundle (you can find the examples directory in this repository):
$ duffle uninstall helloworld-demo
Executing uninstall action...
hello world
uninstall action
Action uninstall complete for helloworld-demo
Notes:
To build and install bundles, you need access to a Docker engine - it can be Docker for Mac, Docker for Windows, Docker on Linux, or a remote Docker engine. Duffle uses the Docker engine to build the invocation images, as well as for running actions inside invocation images.
Duffle has a driver architecture for different ways of executing actions inside invocation images, and more drivers will be available in the future.
Learn more about what a bundle is and its components here.
Get a feel for what CNAB bundles look like by referencing the bundles repo on github.