Although you can already do anything in Otter with script assets
and the other tightly-integrated PowerShell features, you can also
build an Otter Extension to add additional components and functionality into your Otter Installation.
A lot of Otter's functionality is delivered through built-in extensions, and you can add several types of
components by simply creating an extension
that's built against the Otter SDK. Here's what you can extend:
- Configurations - information collected from a server, or a template for desired configuration
- Operations - be it a simple Execute operation, or a Ensure operation
- Raft Repositories - backing store for plans and assets
- Resource Credentials - a secret
- User Directories - authentication and privileges
- Variable Functions - used in plans to provide or manipulate values
Installing and Managing Extensions
See the Otter Extension Tutorial for
instructions on installing extensions; we plan to ship with a BuildMaster-style extension gallery
that will make installing custom extensions much easier in 1.2.
Script Assets vs Custom Extensions
Scripts are significantly easier to develop and manage: just write, test, then upload (or commit), and your script
will be available for execution in a plan as any other operation. For most things you'd need to do in a plan,
that's perfectly adequate.
Extensions are a bit more involved, but allow you to build components other than operations, and provide maximum
flexibility for building operations. You can also incorporate third-party libraries into your extension, and use
the powerful libraries already built-in to the Otter SDK.
Direct Agent Access - with components from Inedo.Agents,
you can build Operations that will be faster and scale better than using scripting runtime
Rich Descriptions - the Inedo.Documentation
components enable you to describe Operations in a plan using a consistent, visually-rich description so that anyone
reading it will see, at a glance, what it's configured to do
Strongly-typed Database Access - data access components in
provide direct -- and safe -- access to the data you persist in Otter's database from the Web Application
without needing to use the API; use it to query or manipulate data with DB::Methods
Additionally, extensions may be easier to unit test and mock using the testing framework of your choice.