使用 Packer 创建自定义镜像

简介: Packer是一款轻量级的镜像定义工具,能够运行在常用的主流操作系统(如Windows、Linux和macOS)上。本文主要为大家讲解如何安装并使用Packer,轻松创建自定义镜像。

hailuo_665225908_RF.jpg
镜像下载、域名解析、时间同步请点击 阿里巴巴开源镜像站

背景信息

本文描述以Linux系统的服务器为例,Windows系统的操作请参见Packer官方文档

一、安装Packer

1、连接并登录到Linux服务器。登录ECS Linux实例服务器,请参见使用用户名密码验证连接Linux实例

2、执行命令cd /usr/local/bin进入/usr/local/bin目录。

cd /usr/local/bin

说明: /usr/local/bin目录为环境变量目录,您可以将Packer安装到该目录下或其他已添加到环境变量的目录下。

3、执行命令wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip获取Packer安装包。访问Packer下载页面,获取其他版本Packer安装包。

wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip

4、执行命令unzip packer_1.1.1_linux_amd64.zip解压文件。

unzip packer_1.1.1_linux_amd64.zip

5、执行命令packer -v验证Packer安装状态。

packer -v
  • 若Linux服务器返回Packer版本号,表示您已正确安装Packer。
  • 若Linux服务器提示command not found表示Packer未正确安装。

二、定义Packer模板

使用Packer创建自定义镜像时,需要创建一个JSON格式的模板文件。在该模板文件中,您需要指定创建自定义镜像的生成器和配置器。详情请参见Provisioners(配置器)。Packer具有多种配置器,可用于配置自定义镜像的内容生成方式,以下以常用的Shell配置器为例,定义Packer模板。
在Linux服务器中创建名为alicloud的json文件并粘贴以下内容。

{
     "variables": {
       "access_key": "{
  {env `ALICLOUD_ACCESS_KEY`}}",
       "secret_key": "{
  {env `ALICLOUD_SECRET_KEY`}}"
     },
     "builders": [{
       "type":"alicloud-ecs",
       "access_key":"{
  {user `access_key`}}",
       "secret_key":"{
  {user `secret_key`}}",
       "region":"cn-beijing",
       "image_name":"packer_basic",
       "source_image":"centos_7_02_64_20G_alibase_20170818.vhd",
       "ssh_username":"root",
       "instance_type":"ecs.n1.tiny",
       "internet_charge_type":"PayByTraffic",
       "io_optimized":"true"
     }],
     "provisioners": [{
       "type": "shell",
       "inline": [
         "sleep 30",
         "yum install redis.x86_64 -y"
       ]
     }]
   }

您需要自定义的参数值如下表所示。

参数 描述
access_key 您的AccessKeyID。更多详情,请参见创建AccessKey
说明 由于AccessKey权限过大,为防止错误操作,建议您创建RAM用户,并使用RAM子账号创建AccessKey。创建AccessKey
secret_key 您的AccessKeySecret。更多详情,请参见创建AccessKey
region 创建自定义镜像时使用临时资源的地域。
image_name 自定义镜像的名称。
source_image 基础镜像的名称,可以从阿里云公共镜像列表获得。
instance_type 创建自定义镜像时生成的临时实例的类型。
internet_charge_type 创建自定义镜像时临时实例的公网带宽付费类型。
provisioners 创建自定义镜像时使用的Packer配置器类型。详情请参见Packer配置器

三、使用Packer创建自定义镜像

指定Packer模板文件生成自定义镜像的操作步骤如下:

  1. 运行命令export ALICLOUD_ACCESS_KEY=<您的AccessKeyID>导入您的AccessKeyID。
  2. 运行命令export ALICLOUD_SECRET_KEY=<您的AccessKeySecret>导入您的AccessKeySecret。
  3. 运行命令packer build alicloud.json创建自定义镜像。

示例运行结果如下,以下示例将创建含Redis的自定义镜像。

alicloud-ecs output will be in this color.
==> alicloud-ecs: Prevalidating alicloud image name...
alicloud-ecs: Found image ID: centos_7_02_64_20G_alibase_20170818.vhd
==> alicloud-ecs: Start creating temporary keypair: packer_59e44f40-c8d6-0ee3-7fd8-b1ba08ea94b8
==> alicloud-ecs: Start creating alicloud vpc
---------------------------
==> alicloud-ecs: Provisioning with shell script: /var/folders/3q/w38xx_js6cl6k5mwkrqsnw7w0000gn/T/packer-shell257466182
alicloud-ecs: Loaded plugins: fastestmirror
---------------------------
alicloud-ecs: Total                                              1.3 MB/s | 650 kB 00:00
alicloud-ecs: Running transaction check
---------------------------
==> alicloud-ecs: Deleting temporary keypair...
Build 'alicloud-ecs' finished.
==> Builds finished. The artifacts of successful builds are:
--> alicloud-ecs: Alicloud images were created:
cn-beijing: m-2ze12578be1oa4ovs6r9

阿里巴巴开源镜像站 提供全面,高效和稳定的系统镜像、应用软件下载、域名解析和时间同步服务。”

相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
相关文章
|
Ubuntu Linux KVM
分享一些OpenStack的qcow2格式实例镜像
分享一些OpenStack的qcow2格式实例镜像
14302 0
分享一些OpenStack的qcow2格式实例镜像
|
Web App开发 域名解析 缓存
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
本文我们主要为大家介绍在 Ubuntu 20.04 上安装 Node.js 和 npm 的三种不同的方式。
164228 7
如何在 Ubuntu 20.04 上安装 Node.js 和 npm
|
运维 数据可视化 安全
阿里巴巴DevOps实践指南(二十三)| 编排运维
面向编排的运维是指用户(PaaS 服务以及开发、运维、运营等角色)根据实际业务需要,对多个原子组件通过简单编排的方式进行灵活装配,构造出不同的业务流程以便完成一个完整的运维需求。运维编排可以帮助我们更好地规范、管理和执行自动化运维操作,以模板的方式定义所需要进行的操作,然后再通过系统运行,从而提高整体运维操作的效率、增强运维操作的安全性,并避免人工运维的错误。
阿里巴巴DevOps实践指南(二十三)| 编排运维
|
jenkins Java Shell
使用 Docker 安装 Jenkins 并实现项目自动化部署
Jenkins 是一款开源的持续集成(DI)工具,广泛用于项目开发,能提供自动构建,测试,部署等功能。作为领先的开源自动化服务器,Jenkins 提供了数百个插件来支持构建、部署和自动化任何项目。
35933 3
使用 Docker 安装 Jenkins 并实现项目自动化部署
|
8月前
|
人工智能 移动开发 自然语言处理
什么是MaaS
MaaS(模型即服务)是一种以AI模型为核心的服务模式,提供从预训练、调优到部署的全生命周期支持。用户能低成本访问和集成先进AI模型,提升业务智能化。其核心特点包括模型为中心、灵活部署、成本优化及开放生态。应用场景涵盖智能客服、交通管理和移动应用开发等,助力企业快速实现智能化转型。
4773 1
|
机器学习/深度学习 人工智能 算法框架/工具
使用Python实现深度学习模型:智能家电控制与优化
使用Python实现深度学习模型:智能家电控制与优化
487 22
使用Python实现深度学习模型:智能家电控制与优化
|
安全 算法 网络安全
OpenSSL安全漏洞有哪些?
【10月更文挑战第4天】OpenSSL安全漏洞有哪些?
520 5
|
存储 Ubuntu Linux
ceph的rbd块设备的使用指南
这篇文章介绍了如何在CentOS和Ubuntu环境下使用Ceph的RBD(Rados Block Device)进行块设备的创建、修改、删除和挂载操作。
682 3
|
Kubernetes 容器
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
基于Ubuntu-22.04安装K8s-v1.28.2实验(三)数据卷挂载NFS(网络文件系统)
622 0
|
存储 人工智能 开发框架
认识什么是互联网数据中心(IDC)
互联网数据中心(IDC)拥有高速带宽、高性能网络与安全环境,提供服务器托管、租用等服务。它是数据存储与流通的核心,支持互联网内容提供商、企业和各类网站的大规模、高质量需求。机房维护涵盖多方面,确保设备稳定运行。中国IDC行业快速发展,机房按星级划分,从一星到五星,标准逐步提升,体现国家信息基础设施的进步与成熟。国际上,Uptime Institute的Tier等级进一步规范了数据中心的可用性与可靠性标准。
2647 6