3 min read

Unveiling the Power of HashiCorp Packer: Crafting Custom Images with Nginx on Alibaba Cloud

Embrace the power of automation and image creation with Packer to streamline your deployment processes and achieve infrastructure nirvana in the cloud era.
Unveiling the Power of HashiCorp Packer: Crafting Custom Images with Nginx on Alibaba Cloud
Photo by Kelli McClintock / Unsplash

In the ever-evolving landscape of cloud infrastructure, automation has become the cornerstone of efficiency and scalability. Among the myriad tools available, HashiCorp Packer stands out as a versatile and powerful solution for building custom machine images.

In this article, we'll explore the essence of HashiCorp Packer, why it is indispensable in modern IT operations, and guide you through the process of building a custom image with Nginx on Alibaba Cloud.

What is Hashicorp Packer?  

HashiCorp Packer is an open-source tool that automates the process of creating identical machine images for multiple platforms. Whether you're working with virtual machines, containers, or other infrastructure types, Packer enables you to build, provision, and deploy consistent images across various environments.

Packer supports a multitude of providers, including cloud platforms like Alibaba Cloud, making it a go-to choice for DevOps professionals seeking streamlined and repeatable image creation.

Why do we need Packer?

In the dynamic world of cloud computing, deploying applications across different environments can be a daunting task. HashiCorp Packer addresses this challenge by providing a unified approach to image creation.

With Packer, you can define your infrastructure as code, ensuring consistency across development, testing, and production environments. This not only reduces the risk of configuration drift but also enhances collaboration and accelerates the deployment process.

Packer's support for multiple providers allows organizations to adopt a multi-cloud strategy effortlessly. Whether you're deploying on Alibaba Cloud, AWS, Azure, or others, Packer abstracts away the intricacies, allowing you to focus on building and deploying applications rather than dealing with platform-specific nuances.

Building Custom Image with Hashicorp Packer

Now that we understand the importance of HashiCorp Packer, let's dive into the practical aspect of building a custom image with Nginx on Alibaba Cloud.

Step 1: Install Packer

Begin by installing Packer on your local machine. You can download the latest version from the official HashiCorp website (https://www.packer.io/downloads).

Once installed, Packer provides a command-line interface for creating and managing images.

Step 2: Prepare Alibaba Cloud Credentials
Make sure you have Alibaba Cloud credentials (Access Key ID and Secret Access Key) with the necessary permissions to create and manage resources.

Set the environment variables with required details

$ export ALICLOUD_ACCESS_KEY="anaccesskey"
$ export ALICLOUD_SECRET_KEY="asecretkey"
$ export ALICLOUD_REGION="cn-beijing"
0:00
/

Step 3: Create a Packer Template File

Create a HCL file (e.g., `alicloud-ubuntu.hcl) to define the Packer template. This file will specify the configuration for building your custom image.

Below is a basic example:

packer {
  required_plugins {
    alicloud = {
      version = "~> 1"
      source  = "github.com/hashicorp/alicloud"
    }
  }
}

source "alicloud-ecs" "nginx" {
  region               = "ap-southeast-1"
  image_name           = "packer_nginx_image"
  source_image         = "ubuntu_18_04_x64_20G_alibase_20231113.vhd"
  ssh_username         = "root"
  instance_type        = "ecs.t6-c4m1.large"
  io_optimized         = true
  internet_charge_type = "PayByTraffic"
  image_force_delete   = true
  associate_public_ip_address  = true
  run_tags = {
    "Built by"   = "Packer"
    "Managed by" = "Packer"
  }
}

build {
  sources = ["sources.alicloud-ecs.nginx"]
  provisioner "shell" {
    inline = [
      "sleep 30", "apt-get update && apt-get upgrade -y && apt-get install nginx -y && sudo systemctl enable nginx && sudo systemctl start nginx"
    ]
  }
}

Step 4: Build the Image

Open a terminal and navigate to the directory containing your Packer template and provisioning script. Run the following command to initiate the image build process:

packer build alicloud-ubuntu.hcl

Packer will start an Alibaba Cloud instance, apply the specified configurations, and create a custom image.

Step 5: Verify the Custom Image

Once the build process completes, log in to your Alibaba Cloud Console, navigate to the "Images" section, and verify that your custom image has been created.

You have now successfully created a custom image for Alibaba Cloud using HashiCorp Packer, ready to be used for deploying instances with Nginx pre-installed.

Adjust the Packer template and provisioning script according to your specific requirements and application configurations.

HashiCorp Packer empowers DevOps teams to build consistent and reproducible machine images across diverse cloud platforms.

In this article, we've explored the fundamentals of Packer and demonstrated its prowess by building a custom image with Nginx on Alibaba Cloud. Embrace the power of automation and image creation with Packer to streamline your deployment processes and achieve infrastructure nirvana in the cloud era.