LINUX

Cómo instalar Packer para crear imágenes de máquinas idénticas

Hola a todos, hoy aprenderemos sobre la instalación de Packer y cómo podemos crear imágenes idénticas usándolo. Packer es una herramienta de código abierto desarrollada y mantenida por Hashicorp para crear imágenes de máquinas idénticas para múltiples plataformas a partir de una configuración de fuente única. Packer es un software ligero que se puede ejecutar en todos los sistemas operativos principales con un gran rendimiento. Es fácil de usar y automatiza la creación de cualquier tipo de imagen de máquina. No reemplaza el marco como Chef y Puppet, pero se puede usar para instalar y configurar el software dentro de las imágenes creadas por Packer.Packer tiene la capacidad de crear imágenes de máquina para cualquier plataforma, pero actualmente Packer se envía con soporte para un conjunto de plataformas. Puede extenderlo a través de complementos para admitir cualquier plataforma. Actualmente, Packer se envía con soporte para Amazon EC2 (AMI), DigitalOcean, Docker, Google Compute Engine, OpenStack, Parallels (PVM), QEMU, VirtualBox (OVF), VMware (VMX).

Estos son los pasos a continuación sobre cómo podemos instalar Packer en nuestro sistema operativo Linux.

1. Descarga de Packer

Podemos descargar fácilmente Packer desde su Página de descarga oficial. Para descargar el empaquetador comprimido 0.7.5 usando wget, simplemente ejecute el siguiente comando en un shell o terminal.

# mkdir ~/packer
# cd ~/packer

Crear directorio de empaquetadores

# wget https://dl.bintray.com/mitchellh/packer/packer_0.7.5_linux_amd64.zip

Descarga de la herramienta Packer

2. Extrayendo Packer

Ahora, extraeremos el empaquetador comprimido que acabamos de descargar usando el comando descomprimir como se muestra a continuación.

Si no tiene unzip instalado, puede instalarlo usando su administrador de paquetes. Aquí, estamos ejecutando Ubuntu Server, así que usaremos apt manager para instalarlo.

# apt-get install unzip

Instalación de Unzip

# unzip packer_0.7.5_linux_amd64.zip

Herramienta de extracción de empaquetadores

3. Configuración de PATH

Ahora, después de extraer Packer, queremos instalarlo en nuestro sistema. Dentro del paquete, están disponibles los archivos binarios como packer, packer-builder-docker, packer-builder-digitalocean, etc. Entonces, para hacerlos utilizables, necesitaremos establecer variables PATH. Necesitaremos agregar las siguientes líneas dentro de ~ / .profile si queremos que el empaquetador esté disponible para el usuario actual como se muestra a continuación.

# nano ~/.profile

Ahora, necesitaremos agregar las siguientes líneas al archivo.

export PATH=$PATH:~/packer/

Perfil de edición

Ahora, tendremos que volver a iniciar sesión para aplicar los cambios al sistema.

Si queremos que Packer esté disponible en todo el sistema, querremos ejecutar los siguientes comandos.

sudo cp -r ~/packer/* /usr/bin/

4. Verificación de la instalación

Si todo salió bien en consecuencia, obtendremos el resultado como se muestra a continuación si ingresamos el empaquetador de comandos dentro de un shell o terminal.

# packer

5. Creación de plantillas

Una vez que hayamos instalado con éxito Packer en nuestro sistema operativo Linux, definitivamente lo intentaremos y queremos crear una imagen con él. Primero, antes de comenzar, necesitaremos saber cómo crear una plantilla para Packer. Entonces, las plantillas son los archivos de configuración que definen dónde y qué imágenes queremos construir. Estos archivos de configuración son plantillas de formato JSON simples y fáciles de configurar.

Por ejemplo, aquí hay un archivo de plantilla de empaquetador simple basado en Amazon EC2 (AMI) y DigitalOcean. Podemos usar nuestro editor de texto favorito para crear la plantilla. Aquí, este ejemplo de plantilla para Amazon EC2 se denomina example-ami.json y para Digital Ocean se denomina example-digitalocean-json.

Para Amazon EC2 (AMI):

# nano example-ami.json

{
"variables": {
"aws_access_key": "",
"aws_secret_key": ""
},
"builders": [{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "us-east-1",
"source_ami": "ami-9eaa1cf6",
"instance_type": "t2.micro",
"ssh_username": "ubuntu",
"ami_name": "packer-example {{timestamp}}"
}]
}

Para Digital Ocean:

# nano example-digitalocean.json

{

"variables": {
"do_api_token": ""
},
"builders": [
{
"type": "digitalocean",
"api_token": "{{user `do_api_token`}}"
}]
}

Nota: Lo anterior es solo una plantilla simple en la que debe completar el contenido para que funcione. Al compilar, pasará aws_access_key, aws_secret_key, digitalocean_client_id y digitalocean_api_key como una variable de usuario, manteniendo sus claves secretas fuera de la plantilla. Deberá crear la credencial de seguridad de la cuenta de la plataforma respectiva.

6. Construyendo las imágenes

Después de crear con éxito la plantilla de Packer, validaremos la plantilla y construiremos la imagen definida por la plantilla. Entonces, para validar la plantilla donde esté configurada correctamente o no, usaremos el comando packer validate. Para hacerlo, necesitaremos ejecutar el siguiente comando en la terminal o shell.

# packer validate example.json

Ahora, después de que tengamos nuestra plantilla validada. Construiremos la imagen usando esa plantilla.

Para Amazon EC2, necesitaremos reemplazar YOU_ACCESS_KEY y YOUR_SECRET_KEY con la clave de acceso y la clave secreta generadas en la cuenta de Amazon EC2.

# packer build 
-var 'aws_access_key=YOUR_ACCESS_KEY' 
-var 'aws_secret_key=YOUR_SECRET_KEY' 
example-ami.json

Para Digital Ocean, necesitaremos reemplazar YOU_ACCESS_KEY y YOUR_SECRET_KEY con la clave de acceso y la clave secreta generada en la cuenta de Digital Ocean.

# packer build 
-var 'do_api_token=YOUR_API_KEY' 
example-digitalocean.json

7. Configuración de proveedores

Ya hemos aprendido anteriormente cómo podemos crear una plantilla y usar esa plantilla para construir imágenes a partir de imágenes base existentes en las respectivas plataformas. Ahora, optaremos por el uso real de Packer, es decir, también se puede usar para instalar y configurar paquetes de software en las imágenes. Para hacerlo, necesitaremos agregar algunas configuraciones más en la plantilla JSON Packer.

Aquí hay un ejemplo de plantilla con aprovisionadores que instalarán el servidor web Apache.

{
"variables": ["..."],
"builders": ["..."],

"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt-get update",
"sudo apt-get install -y apache2"
]
}]
}

8. Construyendo en paralelo

Incluso podemos crear imágenes en múltiples plataformas con una sola plantilla usando Packer. Packer puede crear imágenes automáticamente y aprovisionarlas de acuerdo con nuestros requisitos. Podemos configurar muchas plataformas de forma paralela. A continuación, se muestra un ejemplo sencillo de plantilla para crear imágenes en las plataformas Digital Ocean y Amazon EC2 e instalar Apache Web Server.

{
"variables": {
"aws_access_key": "",
"aws_secret_key": "",
"do_api_token": "",
},
"builders": [{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "us-east-1",
"source_ami": "ami-de0d9eb7",
"instance_type": "t1.micro",
"ssh_username": "ubuntu",
"ami_name": "packer-example {{timestamp}}"
},
{
"type": "digitalocean",
"api_token": "{{user `do_api_token`}}",
"region": "sgp1"
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt-get update",
"sudo apt-get install -y apache2"
]
}]
}

Conclusión

Finalmente, hemos aprendido con éxito cómo instalar y crear imágenes usando una herramienta llamada Packer desarrollada y mantenida por Hashicorp. Packer es una herramienta increíble que utiliza las API de las respectivas Plataformas. Es bastante fácil trabajar con Packer. Es útil si necesita crear varias imágenes en diferentes plataformas a la vez. Tenga en cuenta que el empaquetador no está diseñado para administrar o controlar las imágenes. Si desea compilar y almacenar de forma remota la salida de compilaciones con Packer, deberá usar Atlas de Hashicorp . Por lo tanto, si tiene alguna pregunta, comentario o retroalimentación, escriba en el cuadro de comentarios a continuación y háganos saber qué cosas deben agregarse o mejorarse. ¡Gracias! Disfrute de la herramienta Packer de Hashicorp 🙂

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar