云生态下的镜像管理利器Packer

简介: ## About Packer Packer (https://www.packer.io/)是Hashicorp 组织旗下的一款DevOps运维工具,可以看下整个软件交付周期所处的位置: ![image.

About Packer

Packer (https://www.packer.io/)是Hashicorp 组织旗下的一款DevOps运维工具,可以看下整个软件交付周期所处的位置:
image.png

Packer是一款面向云生态非常便利的镜像管理利器,通过一个模板配置可以快速的创建镜像。
当前支持阿里云、AWS、Azure、Vmware、Google Cloud Platform、DigitalOcean 等多个云厂商平台。通过Packer,可以在创建镜像过程中,执行相应的脚本文件,或者安装目标软件,执行配置系统等操作,可提升系统应用交付效能。

Install Packer

Packer可以安装在多个系统平台上
image.png
通过https://www.packer.io/downloads.html 可以下载相应的可执行二进制包,配置好相应的PATH则可使用Packer Command,如下:
image.png

Build an Image on alicould

只需要通过创建一个Packer的模板配置文件(json格式),指定好镜像所在的region,类型,实例规格,IO类型,则可完成一个系统镜像的创建,下面看一下基于Alicloud的一个模板配置:

{
  "variables": {
    "access_key": "${your_access_key}",
    "secret_key": "${your_secret_key}"
  },
  "builders": [{
    "type":"alicloud-ecs",
    "access_key":"${your_access_key}",
    "secret_key":"${your_secret_key}",
    "region":"cn-beijing",
    "image_name":"packer_test_image",
    "source_image":"centos_7_03_64_20G_alibase_20170818.vhd",
    "ssh_username":"root",
    "instance_type":"ecs.n4.small",
    "internet_charge_type":"PayByTraffic",
    "io_optimized":"true"
  }]
}

其中镜像类型对应的多平台说明文档可参考:
https://www.packer.io/docs/builders/index.html

Provision

Packer 可以支持Provision实现在创建镜像过程中,执行相应的脚本文件,或者安装目标软件,执行配置系统等,比如下可以预先安装redis:
image.png

注意事项:上面配置的sleep 30非常关键,因为在创建镜像的过程中,是构建了完整的VM实例,这中间需要通过SSH上去执行指令的过程中,可能系统尚未完成整改初始化过程,所以需要做一个30秒的时间等待。

Parallel Builds

Packer 同时支持多平台创建一个镜像,如下在AWS、DigitalOcean 创建镜像,只不过这里需要制定好各自平台的AK、API-Token:
image.png

Execute build image

当我们创建好一个镜像的时候,比如这里通过创建一个基于阿里云的镜像模板:

{
  "variables": {
    "access_key": "{your_access_key}",
    "secret_key": "${your_secret_key}"
  },
  "builders": [{
    "type":"alicloud-ecs",
    "access_key":"{your_access_key}",
    "secret_key":"${your_secret_key}",
    "region":"cn-beijing",
    "image_name":"packer_test_image",
    "source_image":"centos_7_03_64_20G_alibase_20170818.vhd",
    "ssh_username":"root",
    "instance_type":"ecs.n4.small",
    "internet_charge_type":"PayByTraffic",
    "io_optimized":"true"
  }],
  "provisioners": [{
    "type": "shell",
    "inline": [
      "sleep 30",
      "echo 'hello world' > /tmp/a.txt"
    ]
  }]
}

我们需要验证写的模板语法上是否有错误,则通过validate进行判断:

$ packer validate alicloud.json 

当如上vadidate验证json语法等问题okay后,则通过packer build 直接构建镜像:

$ packer build alicloud.json

如果为build的过程的STDOUT:
image.png

如上可以看到该过程完成了资源的创建和释放的过程,执行后到阿里云管控控制台查看ECS自定义镜像:
image.png

相关实践学习
2分钟自动化部署人生模拟器
本场景将带你借助云效流水线Flow实现人生模拟器小游戏的自动化部署
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 Cloud Native 数据库
云原生之使用docker部署ZPan个人网盘系统
云原生之使用docker部署ZPan个人网盘系统
340 2
云原生之使用docker部署ZPan个人网盘系统
|
存储 缓存 弹性计算
阿里巴巴开源 容器镜像加速技术DADI 上手指南
阿里资深技术专家在阿里云开发者社区特别栏目《周二开源日》直播中,介绍刚于3月份开源的容器镜像加速器项目 DADI ,并带大家快速上手使用。本文为直播内容文字整理,看直播回放,请点击文首链接~
阿里巴巴开源 容器镜像加速技术DADI 上手指南
|
1月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
38 3
|
7月前
|
IDE Cloud Native 开发工具
云原生之在Docker环境下部署Atheos云IDE平台
【2月更文挑战第3天】云原生之在Docker环境下部署Atheos云IDE平台
576 2
|
弹性计算 NoSQL 安全
在阿里云部署开源软件最便捷的方法
作为一个软件开发或运维工程师,经常会花很多时间去部署配置各种环境,装个开源软件,宝贵的时间就浪费在这里了。 现在有一个便捷的方式,可以快速在阿里云上部署开源软件。
|
运维 安全
《采用Harbor开源企业级Registry实现高效安全的镜像运维》电子版地址
采用Harbor开源企业级Registry实现高效安全的镜像运维
108 0
《采用Harbor开源企业级Registry实现高效安全的镜像运维》电子版地址
|
XML JavaScript Cloud Native
云原生之使用Docker部署kkFileView在线文档管理平台
云原生之使用Docker部署kkFileView在线文档管理平台
2172 0
云原生之使用Docker部署kkFileView在线文档管理平台
|
弹性计算 负载均衡 网络协议
开源PaaS工具CloudFoundry落地阿里云
云计算技术的不断成熟和完善,尤其是IaaS平台的不断发展,使得越来越多的企业和用户青睐于将自己的业务和应用不断的从传统IT设施迁移到云上,在灵活、高效管理应用,快速扩展业务的同时不断地降低基础设施的运维和管理成本。
14155 0
开源PaaS工具CloudFoundry落地阿里云
|
存储 Devops Linux
群晖+DOCKER,一个更好的DEVOPS+WEBOS云平台及综合云OS选型
本文关键字:dualrunning os bootloader设想,dockerized os subsystem appmodel,云devops学编程
829 0
群晖+DOCKER,一个更好的DEVOPS+WEBOS云平台及综合云OS选型
|
弹性计算 网络协议 Devops
云上DevOps-CodePipeline,Packer和Terraform集成实践探索
DevOps越来越火,各种产品层出不穷,技术人员如果不谈谈这个词,就会显得很落伍了,在这种形势下,阿里云也推出了自己的DevOps公共云产品CodePipeline,本文并不想介绍已经铺天盖地的DevOps概念,而是结合阿里云的产品CodePipeline和开源工具Packer,Terraform来实践一种全新云上的DevOps方案,从构建代码,创建自定义镜像,然后基于包含新应用的镜像来创建运行应用的整个基础设施,包括ECS,VPC网络,安全组等等,然后发布应用,从无到有一键完成。
4975 0