diff --git a/website/content/docs/plugins/packer-integration-program.mdx b/website/content/docs/plugins/packer-integration-program.mdx index b6ceabb40..531793b76 100644 --- a/website/content/docs/plugins/packer-integration-program.mdx +++ b/website/content/docs/plugins/packer-integration-program.mdx @@ -18,9 +18,7 @@ This program is intended to be largely a self-service process with links and gui Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration. Packer is lightweight, runs on every major operating system, and is highly performant, creating machine images for multiple platforms in parallel. Packer does not replace configuration management like Chef or Puppet. In fact, when building images, Packer is able to use tools like Chef or Puppet to install software onto the image. -A machine image is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines. Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc. To know more about use cases of Packer click ([Use Cases - Introduction | Packer by HashiCorp](https://www.packer.io/intro/use-cases)) - -For a full description of the current features please refer to the Packer website ([Packer by HashiCorp](https://www.packer.io/)). +A machine image is a single static unit that contains a pre-configured operating system and installed software which is used to quickly create new running machines. Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc. To know more about use cases of Packer click ([Use Cases - Introduction | Packer by HashiCorp](/#features)) The diagram below depicts the key Packer integration categories and types. @@ -38,7 +36,7 @@ The diagram below depicts the key Packer integration categories and types. Main Packer categories for partners to integrate with include: - **Data Sources** - - Data Sources allow users to retrieve values from a remote API and store them as variables in the Packer configuration template. An example is the [AWS secrets manager](https://www.packer.io/docs/datasources/amazon/secretsmanager) data source. + - Data Sources allow users to retrieve values from a remote API and store them as variables in the Packer configuration template. An example is the [AWS secrets manager](/docs/datasources/amazon/secretsmanager) data source. - **Builders** - Builders manage the VM lifecycle. They manage launching a vm/instance, running provisioners against that instance, shutting the instance down, and saving an artifact image from that instance. Your builder handles all of the setup and cleanup costs associated with creating the output image artifact. - **Provisioners** @@ -75,7 +73,7 @@ While not mandatory, HashiCorp encourages vendors to sign an MNDA (Mutual Non-Di In an effort to support our self-serve model we’ve included links to resources, documentation, examples and best practices to guide you through the Packer integration development and testing process. -- [Writing vendor extension guide](https://www.packer.io/docs/plugins/creation) +- [Writing vendor extension guide](/docs/plugins/creation) - Sample development implemented by a [partner](https://github.com/exoscale/packer-plugin-exoscale) - [Scaffolding plugin repository](https://github.com/hashicorp/packer-plugin-scaffolding) to help bootstrap a new contribution: - Contributing to Packer [guidelines](https://github.com/hashicorp/packer/blob/master/.github/CONTRIBUTING.md) @@ -89,20 +87,20 @@ We encourage vendors to closely follow the above guidance. Adopting the same str Packer requires all code-level integrations to be written in the [Go](https://golang.org/) programming language and contain an [MPL-2.0](https://en.wikipedia.org/wiki/Mozilla_Public_License) open source license. The only knowledge necessary to write a plugin is basic command-line skills and knowledge of the Go programming language. When writing in Go-Language, HashiCorp has found the integration development process to be straightforward and simple when vendors pay close attention and follow the resources and by adopting the same structure and coding patterns helps expedite the review and release cycles. Please remember that all integration major steps should contain acceptance testing and the appropriate documentation. Data Sources -- [Custom Data sources documentation](https://www.packer.io/docs/plugins/creation/custom-datasources) +- [Custom Data Sources documentation](/docs/plugins/creation/custom-datasources) - [Example Data Source](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/datasource) Builders -- [Custom Builders documentation](https://www.packer.io/docs/plugins/creation/custom-builders) +- [Custom Builders documentation](/docs/plugins/creation/custom-builders) - [Example Builder](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/builder/order) Provisioners -- [Custom provisioners documentation](https://www.packer.io/docs/plugins/creation/custom-provisioners) +- [Custom Provisioners documentation](/docs/plugins/creation/custom-provisioners) - [Example Provisioner](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/provisioner/toppings) Post-Processors -- [Custom post-processors documentation](https://www.packer.io/docs/plugins/creation/custom-post-processors) -- [Example Post-processor](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/post-processor/receipt) +- [Custom Post-Processors documentation](/docs/plugins/creation/custom-post-processors) +- [Example Post-Processor](https://github.com/hashicorp/packer-plugin-hashicups/tree/main/post-processor/receipt) Packer-Plugin-SDK - The [Packer-plugin SDK](https://github.com/hashicorp/packer-plugin-sdk) contains tools to help plugin developers with common needs, like handling SSH connections or basic plugin architecture. @@ -111,12 +109,12 @@ Packer-Plugin-SDK During the review process, HashiCorp will provide feedback on the newly developed integration. This is an important step to allow HashiCorp to review and verify your Packer integration. Please send the integration code and other relevant logs for verification to: [Packer-integration-dev@hashicorp.com](mailto:packer-integration-dev@hashicorp.com). -In order to document your plugins with Packer, please submit a GitHub pull request (PR) against the [Packer project](https://github.com/hashicorp/packer). See [Registering Plugin Documentation](https://www.packer.io/docs/plugins/creation#registering-plugin-documentation) for instructions on how to register your remote plugin documentation with Packer. +In order to document your plugins with Packer, please submit a GitHub pull request (PR) against the [Packer project](https://github.com/hashicorp/packer). See [Registering Plugin Documentation](/docs/plugins/creation#registering-plugin-documentation) for instructions on how to register your remote plugin documentation with Packer. The review process can take a while to complete and may require some iterations through the code to address any problems identified by the HashiCorp team. #### 5. Release -At this stage, it is expected that the integration is fully complete, the necessary documentation has been written, the acceptance tests have all passed, and that HashiCorp has reviewed the integration. Once the plugin has been validated and accepted by HashiCorp, the plugin can be hosted on GitHub so it can easily be [downloaded then installed within Packer](https://www.packer.io/docs/plugins/creation#creating-a-github-release). +At this stage, it is expected that the integration is fully complete, the necessary documentation has been written, the acceptance tests have all passed, and that HashiCorp has reviewed the integration. Once the plugin has been validated and accepted by HashiCorp, the plugin can be hosted on GitHub so it can easily be [downloaded then installed within Packer](/docs/plugins/creation#creating-a-github-release). Once the integration has been released the vendor is requested to sign the HashiCorp Technology Partner Agreement so that we can have their integration be listed on the HashiCorp website.