全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
云服务器 ECS

使用 Packer 创建自定义镜像

更新时间:2017-12-13 17:35:30

Packer 是一个便捷的创建自定义镜像的开源工具,能运行在大多数主流操作系统上。您可以参阅本文安装并使用 Packer,执行一两行命令就能轻松创建自定义镜像。

前提条件

您已经获取了 AccessKey,参阅文档 创建 Access Key 在管理控制台获取 AccessKey。

注意:由于 AccessKey 权限过大,为防止错误操作,建议您 创建 RAM 子账号,并使用 RAM 子账号 创建 Access Key

使用 Packer 创建自定义镜像

步骤一. 安装 Packer

您可以进入 Packer 官网下载页面,选择下载与您操作系统对应的版本,参阅以下步骤或者访问 Packer 官方安装说明 安装 Packer。

在 Linux 服务器上安装 Packer

以 CentOS 6.8 安装 64 位 Packer 为例:

  1. 连接并登录到 Linux 服务器。如果您的服务器为 ECS Linux 实例,可参阅文档 使用用户名密码验证连接 Linux 实例
  2. 执行命令 cd /usr/local/bin 进入 /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 安装包。
  4. 执行命令 unzip packer_1.1.1_linux_amd64.zip 解压文件。
  5. 执行命令 packer -v 验证 Packer 安装状态。若 Linux 服务器返回 Packer 版本号,表示您已正确安装 Packer;若 Linux 服务器提示 command not found 表示 Packer 未正确安装。

在 Windows 服务器上安装 Packer

以 Windows Server 2012 安装 64 位 Packer 为例:

  1. 连接并登录到 Windows 服务器。如果您的服务器为 ECS Windows 实例,可参阅文档 使用远程连接软件连接 Windows 实例
  2. 打开 Packer 下载页面 选择下载 Windows 64 位 Packer。
  3. 解压文件到指定目录并安装,您可以指定自己常用的目录。
  4. 在环境变量 PATH 中 定义 Packer 所在目录。
    1. 打开 控制面板
    2. 选择 所有控制面板项 > 系统 > 高级系统设置
    3. 单击 环境变量
      Advanced
    4. 在系统变量列表中找到 Path
      PATH
    5. 变量值 中加入 Packer 的安装目录,如本示例中的 C:\Packer,目录之间以半角分号(;)隔开。单击 确定
      Variable
  5. 在 CMD 中执行命令 packer.exe -v 验证 Packer 安装状态。若 Windows 服务器返回 Packer 版本号,表示您已正确安装 Packer;若 Windows 服务器提示 command not found 表示 Packer 未正确安装。

步骤二. 定义 Packer 模板

使用 Packer 创建自定义镜像时,需要创建一个 JSON 格式的模板文件。在该模板文件中,您需要指定创建自定义镜像的 Alicloud Image Builder(生成器)Provisioners(配置器)。Packer 具有多种配置器,可用于配置自定义镜像的内容生成方式,以下以常用的 Shell 配置器为例,定义 Packer 模板。

创建名为 alicloud 的 json 文件并粘贴以下内容。

  1. {
  2. "variables": {
  3. "access_key": "{{env `ALICLOUD_ACCESS_KEY`}}",
  4. "secret_key": "{{env `ALICLOUD_SECRET_KEY`}}"
  5. },
  6. "builders": [{
  7. "type":"alicloud-ecs",
  8. "access_key":"{{user `access_key`}}",
  9. "secret_key":"{{user `secret_key`}}",
  10. "region":"cn-beijing",
  11. "image_name":"packer_basic",
  12. "source_image":"centos_7_02_64_20G_alibase_20170818.vhd",
  13. "ssh_username":"root",
  14. "instance_type":"ecs.n1.tiny",
  15. "internet_charge_type":"PayByTraffic",
  16. "io_optimized":"true"
  17. }],
  18. "provisioners": [{
  19. "type": "shell",
  20. "inline": [
  21. "sleep 30",
  22. "yum install redis.x86_64 -y"
  23. ]
  24. }]
  25. }

注意:您需要自定义以下参数的值。

参数 获取位置
access_key 您的 AccessKeyID。更多详情,参阅创建 Access Key
secret_key 您的 AccessKeySecret。更多详情,创建 Access Key
region 创建自定义镜像时使用临时资源的地域
image_name 自定义镜像的名称
source_image 基础镜像的名称,可以从阿里云公共镜像列表获得
instance_type 创建自定义镜像时生成的临时实例的类型
internet_charge_type 创建自定义镜像时临时实例的公网带宽付费类型
provisioners 创建自定义镜像时使用的 Packer 配置器 类型

步骤三. 使用 Packer 创建自定义镜像

指定 Packer 模板文件生成自定义镜像:

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

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

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

后续操作

您可以使用该自定义镜像创建 ECS 实例,具体步骤参阅文档使用自定义镜像创建实例

参考链接

本文导读目录