github.com/dahs81/otto@v0.2.1-0.20160126165905-6400716cf085/website/source/docs/apps/custom/index.html.md (about) 1 --- 2 layout: "app_custom" 3 page_title: "Custom - App Types" 4 sidebar_current: "docs-custom-index" 5 description: |- 6 Otto has two mechanisms that can be used to extend Otto to support 7 new application types: the "custom" application type and writing 8 a custom application type plugin. 9 --- 10 11 # Custom App Type 12 13 **Type**: `custom` 14 15 While Otto has built-ins for many of the most popular languages and 16 frameworks, we understand that the variety of application development 17 and deployment styles varies widely. 18 19 Otto has two mechanisms that can be used to extend Otto to support 20 new application types: the "custom" application type and writing 21 a custom application type plugin. 22 23 This page documents the "custom" application type. Application type plugins 24 are much more powerful but also more complicated to use. We recommend 25 prototyping with the "custom" application type if possible, and then 26 codifying that into a plugin. To learn how to write an application type 27 plugin, see the [plugins page here](/docs/plugins/app.html). 28 29 The "custom" application type does almost nothing, and relies on heavy use 30 of [customizations](/docs/apps/custom/customization.html) to tell Otto 31 how to behave. This gives the user the ultimate power, but also a high 32 level of complexity. It is meant for advanced users. 33 34 If you find yourself using a common custom application type often, 35 consider extracting it into a real [plugin](/docs/plugins/app.html). 36 37 ## Example 38 39 An example Appfile using the "custom" application type is shown below: 40 41 ``` 42 application { 43 name = "my-app" 44 type = "custom" 45 } 46 47 customization "dev" { 48 vagrantfile = "./Vagrantfile" 49 } 50 51 customization "deploy" { 52 terraform = "./terraform-module" 53 } 54 ``` 55 56 As you can see with the "custom" application type, the Appfile must specify 57 all the lower level configurations that Otto will use for various steps. 58 For development, a [Vagrantfile](https://docs.vagrantup.com/v2/vagrantfile/index.html) 59 must be specified. For deployment, a 60 [Terraform module](https://www.terraform.io/docs/modules/index.html) 61 must be specified. 62 63 More [customizations](/docs/apps/custom/customization.html) are available 64 to fine-tune other steps as well.