packer/website/content/docs/plugins/index.mdx
Lucas Bajolet 280266163c
docs: add plugin loading spec documentation (#13024)
* docs: add plugin loading spec documentation

The logic for discovering and loading plugins is not well documented on
the current documentation.
This causes issues for users that have to troubleshoot why a particular
plugin cannot be found or installed, so this commit adds a specification
document, detailing what are Packer's expectations when it comes to
discovering plugins.

* Apply suggestions from code review

* Update plugin loading specification navbar

---------
Co-authored-by: Wilken Rivera <dev@wilkenrivera.com>
2024-06-10 09:56:14 -04:00

47 lines
2.7 KiB
Text

---
description: |
This topic provides overview information about installing and loading Packer plugins
page_title: Plugins
---
# Plugin installation overview
This topic provides overview information about installing and loading Packer plugins. Plugins are standalone applications that perform additional tasks during each build.
## Introduction
The Packer binary includes a set of built-in components that are automatically usable. You can also install external plugins for Packer to run and communicate with throughout the build. These external plugins extend Packer functionality without modifying the core source code. Packer launches one plugin process for each component in the build.
## Workflows
To use a plugin with Packer, you must install the plugin code and its SHA256SUM file into the Packer plugins directory.
Refer to [Installing Plugins](/packer/docs/plugins/install) for instructions. If you are unable to use an installed plugin refer to the [Plugin Loading - Specification](/packer/docs/plugins/creation/plugin-load-spec) for details on how Packer discovers and loads plugins.
## Where Packer stores plugins
Packer stores external plugins that are downloaded during initialization into the plugins directory. The default plugins directory is `$HOME/.config/packer/plugins` on Unix and `%APPDATA%\packer.d\plugins` on Windows. Refer to [`PACKER_PLUGIN_PATH`](/packer/docs/configure#packer_plugin_path) in the configuration reference for additional information.
## Guidance
Refer to the following plugin documentation for details about the plugin installation process:
### Installing plugins
Refer to [Installing Plugins](/packer/docs/plugins/install) for instructions on adding external plugins to your Packer template and installing the binaries.
### External plugins
Refer to the [Packer Integrations](/packer/integrations) documentation to learn about the available external plugins not included with the Packer binary.
### Built-in plugins
- Packer uses plugins called _builders_ to create machines and images. Refer to [Builders](/packer/docs/builders) for additional information.
- The _data sources_ plugin fetches data to use in a template. Refer to [Data Sources](/packer/docs/datasources) for additional information.
- Plugins called _provisioners_ install and configure machine images after booting. Refer to [Provisioners](/packer/docs/provisioners) for additional information.
- _Post-processors_ perform additional tasks after provisioning. Refer to [Post-Processors](/packer/docs/post-processors) for additional information.
### Developing plugins
Refer to the [Developing Plugins](/packer/docs/plugins/creation) to learn how to create custom external plugins.