Parrot is a tool for attaching existing programs to remote I/O systems through the filesystem interface. For example, here’s how to use Parrot with vi in order to edit a file on a remote file server:
% parrot_run vi /chirp/server.nd.edu/mydata
Parrot “speaks” a variety of remote I/O services include HTTP, FTP, GridFTP , iRODS , CVMFS , andChirp on behalf of ordinary programs. It works by trapping a program’s system calls through the
ptrace debugging interface, and replacing them with remote I/O operations as desired. Parrot can be installed and operated by any user without special privileges or kernel changes and can be applied to almost any program without re-writing, re-linking, or re-installing.
Parrot is particularly useful for running batch jobs in large scale distributed systems. It is most widely used to provide access tohigh energy physics (HEP) software stacks via the global CVMFS filesystem developed at CERN. Because Parrot views every operation on the filesystem, it can make arbitrary changes to an application’s namespace. This allows it to function as asandbox environment, a dependency tracing tool ,virtual machine, and more.
(Note that Parrot is very tightly coupled with the OS kernel. and so it is only available on Linux based operating systems.)