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.