Otter Documentation


Rafts are an advanced feature. If you are just getting started with Otter, you should revisit this topic once you've familiarized yourself with the other components.

Plans and Assets are essentially just files, and to make sharing, versioning, branching, etc. possible, Otter uses a raft to store these files. A raft is sort of abstracted file system, specifically designed for Otter plans and assets.

The Default Raft

Because you likely won't need multiple rafts right away, a raft named "Default" is automatically created when you install Otter. This is a Database raft and is backed up when you do a regular Back-up of Otter.

If you only have a single raft configured, and that raft is named "Default", then the ability to filter or select rafts will not be exposed in on plan, job, asset, server, etc. pages.

Creating, Managing, and Downloading Rafts

You can create, manage, and download a raft as a zip file by going to Admin > Global Components > Rafts.

Otter Raft

Rafts and Environments

When a raft is associated with an Environment, access to contents within the raft will be restricted in two ways:

  • Users without appropriate privileges for the environment will be unable to access the contents (depending on Privilege Configuration)
  • Servers not associated with that environment will raise an error when attempting to access any aspect of the raft

Rafts and Servers / Server Roles

Both Servers and Server Roles may be associated with a raft. When a raft is specified, the corresponding configuration plan will be persisted within that raft. If no raft is specified, then the "Default" raft (if one is named that) is used.

Because rafts can be modified external to Otter, it's possible to create "orphaned" Configuration Plans that are not associated with a server or server role in Otter. Those are simply ignored, but are still displayed on the configuration plans page.

Raft Repository Types

Rafts rely on an Extensible Raft Provider to retrieve and store raft data. There are three built-in raft types:

  • Database - this is the default raft provider, and persists all information in Otter's database; while the contents are not versioned, it's the simplest to use and back-up as part of the Otter database
  • Disk - the raft is persisted as a simple file structure on disk; this may be appropriate for quick testing purposes
  • Git - this raft is synchronized with a branch of a remote Git repository. See the Storing Otter Plans and Configurations in Git tutorial to learn how to use this type of raft.

Other Raft Types

Because we already have a lot of Source Control Integrations in BuildMaster, our application release automation product, it's relatively easy for us to develop repositories for other source control managers like TFS, Subversion, etc. Let us know if that's an important feature for your organization, and we can add it to our Roadmap.

And since these are extensible, you can build them yourself. See the Extensions Documentation to learn more.

Disk Layout Conventions

When stored on disk, in source control, or exported as a zip file, rafts are laid-out as follows.

Orchestration Plans Files (.otter) within the /plans subdirectory
Server Plans Files (.otter) within the /servers subdirectory
Server Role Plans Files (.otter) within the /roles subdirectory
Variables An OtterScript stored in the /variables file, consisting entirely of assign variable statements
Scripts Files (.ps1, .js, .sh) within the /scripts subdirectory
Templates Files (.otter) within the /lib subdirectory
Assets Files within the /files subdirectory

Raft Variables

Variables persisted within a raft are not currently displayed anywhere in the UI, and are intended to be used for storing default or fallback values for plans stored in a portable/reusable rafts. They are the lowest scope, and are only used if a Configuration Variable of the same name does not exist