Plugins
Los plugins de Packer son aplicaciones separadas e independientes que ejecutan tareas durante cada compilación.
Durante un packer build, la lista de procesos muestra aplicaciones con prefijo packer-. Una de esas aplicaciones es el binario de Packer y el resto son plugins. Packer inicia un proceso de plugin para cada componente en la compilación.
Los plugins tienen diferentes niveles
| Nivel | Descripción | Namespace |
|---|---|---|
| Oficial | Los plugins oficiales son propiedad y mantenidos por HashiCorp. | hashicorp |
| Verificado | Los plugins verificados pertenecen y son mantenidos por socios tecnológicos de terceros, pero verificados por HashiCorp | Organización de terceros |
| Comunidad | Provistos por la comunidad. | |
| Archivado | Ya no son mantenidos por HashiCorp, un socio o la comunidad. | hashicorp o terceros |
El binario de Packer posee un conjunto de plugins integrados que pueden ser encontrados y ejecutados automáticamente. También puede definir una lista de plugins externos en su plantilla para que Packer ejecute y se comunique durante la compilación. Estos plugins externos extienden la funcionalidad de Packer sin modificar el código fuente principal.
Estos plugins deben definirse dentro del bloque packer. Por eso me gusta separarlo en packer.pkr.hcl.
Revisa la lista de los plugins externos
Los más importantes:
- Ansible (Oficial)
- Amazon EC2 (Oficial)
- Azure (Oficial)
- Git
En nuestro estudio vamos a utilizar el plugin de Amazon y de Azure. Es necesario definirlos dentro del bloque packer, pero me gusta separar este bloque en el archivo packer.pkr.hcl.
packer {
required_version = ">= 1.8.5"
required_plugins {
amazon = {
version = ">= 1.2.1"
source = "github.com/hashicorp/amazon"
}
azure = {
version = ">= 1.4.1"
source = "github.com/hashicorp/azure"
}
}
}
El comando packer init . hará la descarga de estos plugins. Estos plugins por defecto se guardan en ~/.config/packer/plugins y no en el proyecto como hace Terraform con .terraform. Una vez que el plugin esté descargado en la versión correcta, otras ejecuciones no lo descargarán nuevamente si la versión es compatible.
~/.config/packer 1.3.7 02:06:06
❯ tree
.
├── checkpoint_cache
├── checkpoint_signature
└── plugins
└── github.com
└── hashicorp
├── amazon
│ ├── packer-plugin-amazon_v1.2.1_x5.0_linux_amd64
│ └── packer-plugin-amazon_v1.2.1_x5.0_linux_amd64_SHA256SUM
└── azure
├── packer-plugin-azure_v1.4.1_x5.0_linux_amd64
└── packer-plugin-azure_v1.4.1_x5.0_linux_amd64_SHA256SUM