Example 3. Reading and Writing Data on a Persistent Volume
Persistent Volumes can obviate the need for data
ingress and
egress. A persistent volume may already have
the data needed to execute a workflow when it is
mounted, and data can be written to the volume
that will persist after the workflow has completed. In the following example, we mount a persistent
volume to the job named new-file. The
volume already has the GitHub repo Hello-World saved on
it. The job copies the README file to a new file and appends text.
This example assumes that an administrator has already created a storage
class called
persistent. Since the storage class
has already been created and saved in the Fuzzball environment, we can simply reference it by scope
(in this case user) and name as volume://user/persistent.
version: v1
volumes:
per_vol_1:
reference: volume://user/persistent
jobs:
new-file:
image:
uri: docker://alpine
mounts:
per_vol_1:
location: /data
cwd: /data/Hello-World-master
command:
- /bin/sh
- '-c'
- cp README README.new && echo "(goodbye dear basement)" >>README.new
resource:
cpu:
cores: 2
affinity: NUMA
memory:
size: 2GB
After the workflow has completed successfully, there is a new file on our persistent volume located
at /Hello-world-master/README.new with the following contents:
Hello World!
(goodbye dear basement)