github.com/aspring/packer@v0.8.1-0.20150629211158-9db281ac0f89/website/source/docs/extend/plugins.html.markdown (about)

     1  ---
     2  layout: "docs"
     3  page_title: "Packer Plugins - Extend Packer"
     4  description: |-
     5    Packer Plugins allow new functionality to be added to Packer without modifying the core source code. Packer plugins are able to add new commands, builders, provisioners, hooks, and more. In fact, much of Packer itself is implemented by writing plugins that are simply distributed with Packer. For example, all the commands, builders, provisioners, and more that ship with Packer are implemented as Plugins that are simply hardcoded to load with Packer.
     6  ---
     7  
     8  # Packer Plugins
     9  
    10  Packer Plugins allow new functionality to be added to Packer without
    11  modifying the core source code. Packer plugins are able to add new
    12  commands, builders, provisioners, hooks, and more. In fact, much of Packer
    13  itself is implemented by writing plugins that are simply distributed with
    14  Packer. For example, all the commands, builders, provisioners, and more
    15  that ship with Packer are implemented as Plugins that are simply hardcoded
    16  to load with Packer.
    17  
    18  This page will cover how to install and use plugins. If you're interested
    19  in developing plugins, the documentation for that is available the
    20  [developing plugins](/docs/extend/developing-plugins.html) page.
    21  
    22  Because Packer is so young, there is no official listing of available
    23  Packer plugins. Plugins are best found via Google. Typically, searching
    24  "packer plugin _x_" will find what you're looking for if it exists. As
    25  Packer gets older, an official plugin directory is planned.
    26  
    27  ## How Plugins Work
    28  
    29  Packer plugins are completely separate, standalone applications that the
    30  core of Packer starts and communicates with.
    31  
    32  These plugin applications aren't meant to be run manually. Instead, Packer core executes
    33  these plugin applications in a certain way and communicates with them.
    34  For example, the VMware builder is actually a standalone binary named
    35  `packer-builder-vmware`. The next time you run a Packer build, look at
    36  your process list and you should see a handful of `packer-` prefixed
    37  applications running.
    38  
    39  ## Installing Plugins
    40  
    41  The easiest way to install a plugin is to name it correctly, then place
    42  it in the proper directory. To name a plugin correctly, make sure the
    43  binary is named `packer-TYPE-NAME`. For example, `packer-builder-amazon-ebs`
    44  for a "builder" type plugin named "amazon-ebs". Valid types for plugins
    45  are down this page more.
    46  
    47  Once the plugin is named properly, Packer automatically discovers plugins
    48  in the following directories in the given order. If a conflicting plugin is
    49  found later, it will take precedence over one found earlier.
    50  
    51  1. The directory where `packer` is, or the executable directory.
    52  
    53  2. `~/.packer.d/plugins` on Unix systems or `%APPDATA%/packer.d/plugins` on
    54       Windows.
    55  
    56  3. The current working directory.
    57  
    58  The valid types for plugins are:
    59  
    60  * `builder` - Plugins responsible for building images for a specific platform.
    61  
    62  * `command` - A CLI sub-command for `packer`.
    63  
    64  * `post-processor` - A post-processor responsible for taking an artifact
    65      from a builder and turning it into something else.
    66  
    67  * `provisioner` - A provisioner to install software on images created by
    68      a builder.