如何使用Packer创建阿里云自定义镜像

阿里云中的每个ECS实例都由包含不同操作系统分发和版本的镜像创建。 镜像可包括预安装的应用程序和配置。 阿里云市场为最常见的操作系统和应用程序环境提供许多第一和第三方镜像,或者也可创建满足自身需求的自定义镜像。 本文详细介绍了如何使用开源工具 Packer 在阿里云中定义和生成自定义镜像。

1. 安装Packer

安装

从Packer官方站点的下载页面选择与你操作系统对应的版本,下载后解压缩到任何目录,安装就完成了,为了方便你在命令行使用,你可以将packer命令移动到位于环境变量PATH中定义的目录下或者将packer命令所在的目录添加到系统PATH变量中。

验证

为了验证你的Packer安装正确,在你的系统中运行"packer -v"(注:windows请运行"packer.exe -v") 你应该可以看到如下示例的帮助信息。如果输出的错误信息是找不到Packer命令,请确保packer程序位于你的PATH环境变量指定的路径下。

$ packer -v
0.12.1

2. 获取阿里云Access Key

  1. 登陆 阿里云官方网站
  2. 进入页面上方菜单【管理控制台】
  3. 进入页面上方级菜单【Access Key】
  4. 页面所显示的Access Key ID和Access Key Secret则为所需ID和Key

3. 定义 Packer 模板

生成镜像,需创建一个JSON格式的模板文件。 在模板中,定义执行实际生成过程的生成器配置器。 Packer 具有多种配置器,可用于自定义镜像的内容生成方式,在下面的示例中使用最常用的Shell类型。

创建名为 alicloud.json 的文件并粘贴以下内容。 为以下内容输入自己的值:

参数 获取位置
access_key 从上一步中获取的 Access Key ID
secret_key 从上一步中获取的 Access Key Secret
region 创建镜像使用临时资源的区域
image_name 创建的镜像名称
source_image 基础镜像的名称,可以从阿里云公有镜像列表获得
instance_type 创建镜像时生成的临时实例的类似
internet_charge_type 创建镜像时临时实例的网络付费类型
provisioners 创建镜像时配置器类型
  {
     "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"
       ]
     }]
   }

4. 生成 Packer 映像

如果尚未在本地计算机上安装 Packer,请按照第一步安装或者 Packer 安装说明进行安装。

通过指定 Packer 模板文件生成镜像,如下所示:

$ export ALICLOUD_ACCESS_KEY=在第2步获得的Access Key ID
$ export ALICLOUD_SECRET_KEY=在第2步得的Access Key Secret
$ packer build alicloud.json
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: Start creating vswitch...
==> alicloud-ecs: Start creating security groups...
==> alicloud-ecs: Start creating alicloud instance
==> alicloud-ecs: Start allocated alicloud eip
==> alicloud-ecs: Allocated alicloud eip 39.106.47.173
==> alicloud-ecs: Alcoud instance starting
    alicloud-ecs: Attach keypair packer_59e44f40-c8d6-0ee3-7fd8-b1ba08ea94b8 to instance: i-2zefhslbbsg76l3g5bf9
==> alicloud-ecs: Waiting for SSH to become available...
==> alicloud-ecs: Connected to SSH!
==> alicloud-ecs: Provisioning with shell script: /var/folders/3q/w38xx_js6cl6k5mwkrqsnw7w0000gn/T/packer-shell257466182
    alicloud-ecs: Loaded plugins: fastestmirror
    alicloud-ecs: Determining fastest mirrors
    alicloud-ecs: Resolving Dependencies
    alicloud-ecs: --> Running transaction check
    alicloud-ecs: ---> Package redis.x86_64 0:3.2.10-2.el7 will be installed
    alicloud-ecs: --> Processing Dependency: libjemalloc.so.1()(64bit) for package: redis-3.2.10-2.el7.x86_64
    alicloud-ecs: --> Running transaction check
    alicloud-ecs: ---> Package jemalloc.x86_64 0:3.6.0-1.el7 will be installed
    alicloud-ecs: --> Finished Dependency Resolution
    alicloud-ecs:
    alicloud-ecs: Dependencies Resolved
    alicloud-ecs:
    alicloud-ecs: ================================================================================
    alicloud-ecs: Package           Arch            Version                  Repository     Size
    alicloud-ecs: ================================================================================
    alicloud-ecs: Installing:
    alicloud-ecs: redis             x86_64          3.2.10-2.el7             epel          545 k
    alicloud-ecs: Installing for dependencies:
    alicloud-ecs: jemalloc          x86_64          3.6.0-1.el7              epel          105 k
    alicloud-ecs:
    alicloud-ecs: Transaction Summary
    alicloud-ecs: ================================================================================
    alicloud-ecs: Install  1 Package (+1 Dependent package)
    alicloud-ecs:
    alicloud-ecs: Total download size: 650 k
    alicloud-ecs: Installed size: 1.7 M
    alicloud-ecs: Downloading packages:
    alicloud-ecs: --------------------------------------------------------------------------------
    alicloud-ecs: Total                                              1.3 MB/s | 650 kB  00:00
    alicloud-ecs: Running transaction check
    alicloud-ecs: Running transaction test
    alicloud-ecs: Transaction test succeeded
    alicloud-ecs: Running transaction
    alicloud-ecs: Installing : jemalloc-3.6.0-1.el7.x86_64                                  1/2
    alicloud-ecs: Installing : redis-3.2.10-2.el7.x86_64                                    2/2
    alicloud-ecs: Verifying  : redis-3.2.10-2.el7.x86_64                                    1/2
    alicloud-ecs: Verifying  : jemalloc-3.6.0-1.el7.x86_64                                  2/2
    alicloud-ecs:
    alicloud-ecs: Installed:
    alicloud-ecs: redis.x86_64 0:3.2.10-2.el7
    alicloud-ecs:
    alicloud-ecs: Dependency Installed:
    alicloud-ecs: jemalloc.x86_64 0:3.6.0-1.el7
    alicloud-ecs:
    alicloud-ecs: Complete!
==> alicloud-ecs: Start delete alicloud image snapshots
==> alicloud-ecs: Creating alicloud images: packer_basic
    alicloud-ecs: Detach keypair packer_59e44f40-c8d6-0ee3-7fd8-b1ba08ea94b8 from instance: i-2zefhslbbsg76l3g5bf9
==> alicloud-ecs: Clean the created EIP
==> alicloud-ecs: Clean the created instance
==> alicloud-ecs: Clean the created security group
==> alicloud-ecs: Clean the created vSwitch
==> alicloud-ecs: Clean the created VPC
==> 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

执行完成后,就可以在自定义镜像列表中刚才创建的包含了安装好redis的自定义镜像了。基于这个镜像就可以创建包含redis应用的ECS实例。更多的参考可以访问阿里云官方插件仓库和 Packer 官方文档

时间: 2024-09-10 21:39:45

如何使用Packer创建阿里云自定义镜像的相关文章

Packer创建阿里云本地镜像

Packer创建阿里云本地镜像 通过手工创建在本地镜像,并且上传到云环境是一个复杂而易错的过程,而packer的出现极大的降低了这种复杂度,本文详细了讲解了如何在ubuntu(16.04或者更高版本)系统基于packer创建centos 6.8的镜像并上传到阿里云自定义镜像的全过程. 1.准备 1.1安装kvm 首先查看cpu是否支持kvm,执行如下命令,如果有类似下面的输出,就是支持kvm: # egrep "(svm|vmx)" /proc/cpuinfo pat pse36 cl

阿里云上线镜像平台 小白用户轻松上云

本文讲的是阿里云上线镜像平台 小白用户轻松上云,5月6日,阿里云计算镜像平台正式上线,面向用户提供一键式的云服务器配置服务,帮助"小白用户"轻松上云.该平台将大大降低用户入云门槛,提供云服务器(ECS)的易用性. 在阿里云镜像平台上,服务商可以向用户提供基于云计算产品的工具.镜像和运维服务.镜像是指云服务器(ECS)实例可选择的运行环境模板,一般包括操作系统和预装的软件.镜像能够解决"小白用户"的技术问题,节省繁琐的配置时间,轻松上云. 对许多云计算用户而言,一旦系

四个问题读懂阿里云的镜像仓库,如何为镜像进行全生命周期管理?

一句话介绍镜像仓库 阿里云容器镜像服务提供了安全的镜像托管能力,稳定的国内外镜像构建服务.便捷的团队组织协作功能等,方便用户进行镜像的全生命周期管理. 下面是阿里云容器镜像服务的相关数字: 经过阿里集团双十一验证,支撑10万镜像.2亿下载.近万并发 为什么推出镜像仓库? 容器的使用离不开镜像.以Docker为代表的容器技术,可以将应用打包成标准格式的镜像,并且应用会以容器的方式再度启用运行. 在真正的生产环境中,你会需要大量的镜像,第三方或者是自建的:大量镜像伴随而来的是需要保存.分发使用等管控

阿里云自定义日记文件无法通过ftp下载

异常处理汇总 ~ 修正果带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4599258.html 有可能是个例,xftp不行(对linux支持很好),CuteFTP 9 可以(阿里云推荐的另一款ftp软件也不行)

阿里云如何创建自定义镜像

阿里云如何创建自定义镜像 自定义镜像是针对有效运行云服务器 ECS 实例的用户.通过已创建的自定义镜像,帮助您一次性开通多台已完全拷贝相同操作系统及环境数据等的云服务器 ECS 实例,可以满足您弹性扩容的业务需求. 自定义镜像是基于云服务器系统盘某一时刻的快照.同时开通的云服务器 ECS 实例的配置既可以相同,也可以不同. 说明 一个帐号最多能创建 30 个自定义镜像. 创建的自定义镜像不能跨区域使用. 通过自定义镜像开通的云服务器可以更换操作系统.更换系统后原来的自定义镜像还能够还可以继续使用

应用迁云之镜像迁移-(4)迁移到阿里云实施流程和实践方法

镜像迁移到阿里云实施流程   1.       镜像迁移可行性评估 当我们选择镜像迁移前需要对被迁移的服务器主机详细信息进行调研按照镜像迁移可行性评估小节中描述的要求及限制进行评估评估是否可行.及是否需要采用镜像迁移的方式来进行迁移. 如果被迁移服务器主机数量规模大.并且大多都带系统盘.网络条件不好的情况建议不要使用镜像迁移方式因为往往镜像文件都比较大在此条件下进行镜像迁移反而会加大迁移的时间及人力成本. 如果被迁移服务器主机中应用配置比较复杂.无人维护.网络条件好我们建议使用镜像迁

自定义监控(阿里云&zabbix)

目前阿里云对25端口有限制,无法在阿里云上搭建邮件服务器发送告警邮件,如果需要邮件通知,可以采取下面方法: 1.开同阿里云企业邮箱 2.使用阿里云监控告警 3.第三方开源监控系统zabbix自定义脚本监控 一.阿里云自定义监控 阿里云提供自定义监控SDK,这有助于我们定制化的根据自身业务来做监控,下面我就根据业务需求来介绍一个简单的自定义监控配置. 阿里提供了2个版本的自定义监控接口: 自定义监控SDK(python版) :cms_post.py 自定义监控SDK(bash版) :cms_pos

阿里云黎山:如何利用开源DevOps工具完成云上的自动运维

编辑IT大咖说字数:2916用时:8分钟 内容概况云计算的特点是开箱即用,可以随时的扩缩容,不用考虑硬件的损坏问题,也有丰富的云服务和云平台供我们选择.在本次演讲中,黎山通过实际应用场景为我们讲述了基础设施及代码的重要性,以及在云计算的运维中,如何利用工具来实现自动化,提高效率. 大家好,今天我们围绕几个议题展开: 通过实际的应用场景来讲解IaC的重要性. Terraform.Packer的使用介绍. 多个工具组合案例+操作演示. 实际应用场景 应用场景解析一 某应用为了增大吞吐量,做了流量的均

阿里云迁云方式大汇总

前不久,阿里云发布了一款迁云神器,即 阿里云迁云工具,使用该迁云神器您可以方便快捷地将服务器迁移至阿里云. 其实,除了迁云神器之外,还有其他迁移服务器至阿里云的途径. 以下分别从迁云方式和服务器来源维度,分析可能的迁云途径. 相信总有一款适合您! 迁云方式维度 迁云方式 适用场景 特点 限制条件 阿里云迁云工具 适用于迁移所有类型的服务器,包括物理服务器.虚拟服务器.其他云平台的云主机等. 免安装 操作简单 全托管 支持数据盘 待迁移服务器必须能访问公网 镜像导入 已经将需要迁移的服务器在线下制