实战Packer创建chef server镜像

简介: Packer简介 Packer是一个从单一配置文件为多平台创建一致镜像的轻量级的开源工具。能够运行在主流的操作系统上,并行高效的创建多平台的虚拟机镜像,它为代码即基础结构提供了坚实的基础,通过packer较大的降低了了创建用户自定义镜像的难度,并且将创建镜像的过程从人工的随机过程变成可以配置管理代码,可测试的过程,从而减少了用户应用上云的障碍之一。

Packer简介

Packer是一个从单一配置文件为多平台创建一致镜像的轻量级的开源工具。能够运行在主流的操作系统上,并行高效的创建多平台的虚拟机镜像,它为代码即基础结构提供了坚实的基础,通过packer较大的降低了了创建用户自定义镜像的难度,并且将创建镜像的过程从人工的随机过程变成可以配置管理代码,可测试的过程,从而减少了用户应用上云的障碍之一。下面就从实战的角度来构建一个chef server镜像来学习packer的使用。

Packer的安装

首先从Packer官网下载对应操作系统的安装包,本文以Mac OS X x64为例,点击如下图的官网链接下载packer安装包screenshot
然后打开终端,导航到下载目录下,执行如下命令,如果得到如下图的输出,packer就安装好了:

#unzip packer_0.12.3_darwin_amd64.zip
#sudo mv packer /usr/local/bin/
#packer
usage: packer [--version] [--help] <command> [<args>]

Available commands are:
    build       build image(s) from template
    fix         fixes templates from old versions of packer
    inspect     see components of a template
    push        push a template and supporting files to a Packer build service
    validate    check that a template is valid
    version     Prints the Packer version

由于阿里云的packer插件提交还在流程中,所以还需要从阿里云的开源站点下载阿里云的packer插件,然后执行如下命令,如果输出如下,插件就安装好了:

#tar -xvf  packer-builder-alicloud-ecs_darwin-amd64.tgz
#sudo mv bin/packer-builder-alicloud-ecs /usr/local/bin/
# ls /usr/local/bin | grep packer

packer                                  packer-builder-alicloud-ecs

创建chef server

从阿里云的packer插件代码站点下载样例文件alicloud.json,chef.sh,user_data.sh到同一目录,打开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_chef2",
    "source_image":"ubuntu_14_0405_64_40G_base_20170222.vhd",
    "ssh_username":"root",
    "instance_type":"ecs.n1.medium",
    "io_optimized":"true",
    "image_force_delete":"true",
    "ssh_password":"Test1234",
    "user_data_file":"examples/alicloud/chef/user_data.sh"
  }],
  "provisioners": [{
    "type": "file",
    "source": "examples/alicloud/chef/chef.sh",
    "destination": "/root/"    
   },{
    "type": "shell",
    "inline": [
    "cd /root/",
    "chmod 755 chef.sh",
    "./chef.sh",
    "chef-server-ctl  reconfigure"
    ]
  }]
}

将其中的"variable"部分的"access_key"和"secret_key"的值替换为你自已的access key和secret key,或者在终端中执行

#export ALICLOUD_ACCESS_KEY="<你的access_key>"
#export ALICLOUD_SECRET_KEY="<你的secret_key>"

你可以从阿里云控制台获取访问的AK,打开控制台登录后,点击页面右上角的登录名,出现如下图菜单,在菜单中选择accesskeys按钮
screenshot
然后在Access key管理页面点击右上角的"创建Access Key"按钮,创建新的Access Key ID和Access Key Secret,将值替换模板中或者设置如上的环境变量。
然后修改如下两行的值

"user_data_file":"examples/alicloud/chef/user_data.sh"
"source": "examples/alicloud/chef/chef.sh",

为

"user_data_file":"user_data.sh"
"source": "chef.sh",

在文件所在的目录执行

#packer build alicloud.json

alicloud-ecs output will be in this color.

==> alicloud-ecs: Force delete flag found, skipping prevalidating alicloud image name
    alicloud-ecs: Found image ID: ubuntu_14_0405_64_40G_base_20170222.vhd
==> alicloud-ecs: Not using temporary keypair
==> alicloud-ecs: Start create alicloud vpc
==> alicloud-ecs: Start creating vswitch...
==> alicloud-ecs: Start creating security groups...
==> alicloud-ecs: Start creating alicloud instance
.............

运行正常结束后,你就可以登录控制台镜像列表查看到刚才创建的镜像了。
screenshot


然后基于这个自定义的镜像创建ECS实例,我的结果如下图,(注:如果创建的ECS实例是经典网络,需要登录到ECS实例上手动执行user_data.sh脚本)
screenshot
然后在浏览器中输入如下地址:https://123.56.16.159/
你就可以看到chef的web界面了。(注:注意更改成你自已实例的IP地地址)
screenshot

展望

诚然,引入新的机制,会引入相应的学习曲线,对于packer来说,编写可用的镜像模板文件不是一件简单的事情,但是随着开源的盛行,很多常用的的模板都能够从github上找到,例如如下资源库中就包含大量的模板,当然,由于阿里云的packer插件支持才刚刚起步,所以也欢迎大家以阿里云官方packer插件资源库来贡献一份力量。

相关实践学习
基于ECS搭建云上博客
本实验教您如何在ECS云服务器(Alibaba Cloud Linux 3)的环境下,通过部署LAMP环境并安装WordPress快速搭建个人博客。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 算法 数据库
阿里云InfluxDB®基于TSI索引的数据查询流程
简介 时间序列数据库是目前技术发展最快的数据库类型之一。作为业界最为流行的时序数据库InfluxDB,其部署运行十分简洁方便,支持高性能时序数据的读写,在应用程序监控、物联网(IoT)领域有着广泛的应用。
4603 1
thinkphp6.0 集成Alipay 手机和电脑端支付的方法
第一步   下载 Alipay 的PHP SDK :https://docs.open.alipay.com/54/103419/ 第二步   解压下载都到的压缩包:   解压后得到的文件内容如图    第三步、上传得到的目录中的 aop 文件夹到 thinkphp 6.
6788 0
|
监控 Java API
SpringBoot 2.0 + 阿里巴巴 Sentinel 动态限流实战
前言 在从0到1构建分布式秒杀系统和打造十万博文系统中,限流是不可缺少的一个环节,在系统能承受的范围内既能减少资源开销又能防御恶意攻击。 在前面的文章中,我们使用了开源工具包 Guava 提供的限流工具类 RateLimiter 和 OpenResty 的 Lua 脚本分别进行 API 和应用层面的限流。
3736 0
|
数据安全/隐私保护
阿里云企业实名认证怎么操作-如何进行企业实名认证
阿里云企业实名认证共分为四种方式1、通过企业支付宝授权认证。2、通过企业法人支付宝授权认证。 3、通过企业法人扫脸认证。 4、通过企业银行打款方式认证。注意:如果您选择通过企业支付宝认证,您提供的支付宝的主体信息必须为该企业的信息。
12962 3
|
小程序 物联网 定位技术
阿里云+微信小程序+GPS定位
阿里云物联网板块是一个功能非常强大的板块,而且通俗易懂,非常容易上手,比华为的要稍微容易上手一些。本次,小编通过阿里云物联网平台,将SIM800M32的GPS经纬度坐标发送到阿里云平台,并通过规则引擎转发数据至微信小程序,然后在地图上显示位置。
5470 0
|
安全 Linux
Linux系统安全之Rootkit原理解析与检测实践
本章将首先介绍Linux Rootkit的分类和原理,然后介绍用于检测Rootkit的工具和方法。
9355 0
|
SQL Java 大数据
阿里技术协会(ATA) 201702系列精选文集
在云栖社区的优质技术文章中,有很多是来自阿里巴巴技术协会(Alibaba Technology Association,简称ATA)的贡献,云栖社区将定期摘选优质的阿里技术协会出品的技术文章并整理成合集,方便各位技术人查阅参考,2017年2月份的部分文章如下。
12597 0
|
Java 数据库连接 程序员
走进JavaWeb技术世界3:JDBC的进化与连接池技术
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看 https://github.com/h2pl/Java-Tutorial 喜欢的话麻烦点下Star哈 文章首发于我的个人博客: www.how2playlife.com 本文是微信公众号【Java技术江湖】的《走进JavaWeb技术世界》其中一篇,本文部分内容来源于网络,为了把本文主题讲得清晰透彻,也整合了很多我认为不错的技术博客内容,引用其中了一些比较好的博客文章,如有侵权,请联系作者。
|
自然语言处理 机器人 API
手把手教你怎么免费为微信公众号接入智能客服
本文转自:http://blog.csdn.net/jjccwwbb/article/details/39079819 不少做微信的小伙伴在研究其他人的微信公众号时一定发现了,无论是什么时候,只要发送内容给公众号就会收到回复,并且发送“火车票”、“天气预报”、“听首歌”等文字的时候,还能收到公众号的信息回复,这些事怎么做到的呢?其实很简单!下面我就把方法分享给大家吧,有需要的
4145 0
|
SQL Java 关系型数据库
Spring Boot 多数据源,整合 Atomikos 实现分布式事务
最近的项目需要整合两个数据库,有些业务逻辑也涉及到两个数据库同时插入、更新的操作;所以就涉及到跨数据库的数据一致性问题。于是基于 `Spring Boot` 整合了 `Atomikos` 的一个项目 demo。
3112 0

热门文章

最新文章