Getting Your First Workflow
Your Fuzzball cluster hosts a list of prebuilt Fuzzfile templates in the Workflow Catalog. These template workflows allow you to automatically create the YAML files (Fuzzfiles) that define workflows and they are a great way to get up and running with Fuzzball quickly. Detailed information on developing Fuzzfiles and a complete syntax guide are presented elsewhere.
The workflow used to complete this tutorial runs for 5 minutes and prints one integer from 1 to 300 per second. In the real world, this workflow is completely useless. But it serves as a useful demonstration for this tutorial since it produces output that can be gathered via Fuzzball logging and runs for 5 minutes allowing time for user interaction. More useful “real world” examples can be obtained in the Workflow Examples section.
For now, simply select one of the tabs below to see instructions specific for your environment.
We can use the Workflow Catalog to get up and running quickly with a basic Fuzzball example. The Workflow Catalog has templates that create Fuzzfiles automatically from a workflow template and user-provided parameters. In this tutorial, we will use the Printer template to create a Fuzzfile and run a simple workflow.
In the Workflow Catalog use the search bar to locate the example named “Printer Example”.

You can see details about the workflow template by either clicking on the name of the workflow or by
selecting “View details” from the kebab menu of the workflow template card. The detail page will
show you a template used to create the printer workflow Fuzzfile, as well as the inputs that can be
changed by the user. The values in the YAML template that are surrounded by double curly braces and
preceded by a dot (e.g. {{.Container}}) are inputs that you can change before rendering the
finished Fuzzfile.

You can choose to render the workflow template with the parameters you select and open the resulting Fuzzfile in the Workflow Editor (“Render Fuzzfile and Edit”), or directly run it (“Render Fuzzfile and Run”). For the purposes of this tutorial, select “Render Fuzzfile and Run”. Either way, a dialog box like the following will open allowing you to edit the input parameters before creating the final Fuzzfile.

The printer template allows you to change the container that is used to run the printer job, and the number of seconds that the job runs. Other templates may allow you to change the commands that are run, the resources that are used, etc.
For now, just select “Run” without changing any defaults. The message at the bottom indicates that the Fuzzfile has been automatically rendered (behind the scenes) and checked for valid syntax and you are presented with a dialog showing a summary of the rendered workflow and allowing you to name your workflow execution.

That’s it! At this point a valid Fuzzfile for the printer workflow has been saved behind the scenes and is ready to be submitted by clicking the “Start Workflow” button. We’ll look at submitting the workflow in the next section on Starting and Stopping Your New Workflow.
Building your Fuzzfile outside of the GUI is simply a matter of using a text editor. First, let’s create a new directory to experiment in:
$ mkdir ~/fb-work
$ cd !$Now either copy and paste the contents of printer.fz described here into the appropriately named
file using the text editor of your choice, or download the file and place it in the directory you
just created.
version: v1
jobs:
printer:
#!/bin/sh
uri: docker://docker.io/alpine:latest
policy:
timeout:
execute: 6m0s
script: |
#!/bin/sh
for i in $(seq 1 300); do echo $i; sleep 1; done
resource:
cpu:
cores: 1
memory:
size: 1GB
The.fzfile extension is not necessary. Fuzzfiles also commonly carry.ymlor.yamlextensions since they are written in YAML.
Fuzzball will automatically check and validate your Fuzzfile for syntax errors when you submit the workflow, but you can do so manually with the following command:
$ fuzzball workflow validate ./printer.fz
"./printer.fz" has been validated.A Fuzzfile with syntax errors will return an error similar to this:
$ fuzzball workflow validate ./printer.fz
yaml: unmarshal errors:
line 2: field jerbs not found in type api.WorkflowDefinitionIf you want detailed information about the sections in this Fuzzfile, expand the section below. Feel free to skip this section for now if you are just trying to learn how to submit your workflows with Fuzzball.