packer的基本使用
工具的产生,一定是为了解决某些痛点,那么痛点是?
你们在工作中是不是经常用到各种云?aliyun, aws, digitalOcean and so on?
你们的规模不大不小,经常去云平台上点一点,创建一台实例?
创建完实例以后,运行初始化脚本,安装必须的软件,再做其它操作?
初始化脚本运行慢不说,还特么都是bug?
大哥你心累吗?

有更好的办法,packer了解一下?
在说packer之前,先说啥是基础设施即代码(Infrastracture as Code),传统情况下,搬服务器,插网线这些事儿怎么着也和代码不沾边儿
但这是云的时代了,你上控制台上点一点,实例就生成了,点是你还要点啊,如果你把这些点的动作写成代码,直接运行,一切都完成了。
是不是很爽?
packer就是这么个工具,你在代码里定义基础镜像,规定里面装哪些软件,然后生成一个镜像,然后你就可以直接用这个镜像起动实例了,
实例启动后,该有的都有了,不用去执行什么初始化脚本,你写的代码可以在多个云平台上使用,当然有些云还不支持此工具,毕竟它还很
年轻。
下面我们做个简单的例子,实操一下

用packer生成安装有所需工具的镜像
我使用的云平台是aws,阿里云可能需要装个小插件,请自行阿里一下。
我一会要用packer安装的工具有:
jq:json处理工具
boto3:aws的s3命令行依赖这个
supervisor: 进程管理工具
dotnet: 微软的.net在linux跑的也不错奥
至于这为什么要装这些东西,肯定是我要用啊,你想装其它的都行。

packer这货是用go写的编译好的binary,直接放到/usr/local/bin/下就可以了
下面就写packer的配置文件了呗, 我这里放个demo,详细的见官网
[root@ip-172-31-42-166 packer_workspace]# cat blast_base.json
{
"variables": {
"aws_access_key": "",
"aws_secret_key": "",
"aws_region": "us-west-2"
},
"provisioners": [
{
"type": "ansible",
"user": "ec2-user",
"ansible_env_vars": [
"ANSIBLE_HOST_KEY_CHECKING=False",
"ANSIBLE_SSH_ARGS='-o ForwardAgent=yes -o ControlMaster=auto -o ControlPersist=60s'",
"ANSIBLE_NOCOLOR=True",
"ANSIBLE_ROLES_PATH=../ansible_workspace/roles",
"AWS_ACCESS_KEY_ID={{user `aws_access_key`}}",
"AWS_SECRET_ACCESS_KEY={{user `aws_secret_key`}}"
],
"extra_arguments": [
"--extra-vars",
"aws_region={{user `aws_region`}}"
],
"playbook_file": "./books/initall.yml"
}
],
"builders": [
{
"type": "amazon-ebs",
"access_key": "{{user `aws_access_key`}}",
"secret_key": "{{user `aws_secret_key`}}",
"region": "{{user `aws_region` }}",
"source_ami_filter": {
"filters": {
"image-id": "ami-d874e0a0"
}
},
"instance_type": "t2.micro",
"ssh_username": "ec2-user",
"ami_name": "Blast_base {{timestamp}}"
}
]
}
上面配置文件的意思大概是说我要生成一个镜像,在这个过程中我调用ansible脚本,去安装我想安装的东西
当然你可以不调用ansible,而直接运行shell命令或脚本,但是当安装的东西太多时,那样也不优雅。。。
配置文件写完了,校验一下写的有没有语法问题:
packer validate blast_base.json Template validated successfully.
没有语法错误,那就构建吧:
packer build blast_base.json
稍等一小下,aws镜像已经生了,可以愉快的使用了,其实生成实例也有相关工具,叫terraform,就不介绍了
感觉趣可以自己查官网,这里说的比较简单,就是想起一个抛砖引石的作用,具体用法请看官网。
packer的基本使用的更多相关文章
- 使用packer制作vagrant centos box
使用packer制作vagrant box:centos 制作vagrant box,网上有教程,可以自己step by step的操作.不过直接使用虚拟在VirtualBox中制作vagrant b ...
- Qt程序打包(使用Enigma Virtual Box和BoxedApp Packer封包)
一.使用单文件封包工具 单文件封包工具,顾名思义就是将可执行文件及其相关依赖打包成单个可执行文件的工具. 这里推荐两个单文件封包工具:Enigma Virtual Box和BoxedApp Packe ...
- 在cocos2d里面如何使用Texture Packer和像素格式来优化spritesheet
免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作 ...
- Unity2D Sprite Packer用法介绍
想充分利用图片空间? 我们用来做sprite的图片通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了. 如果想避免这些资源上的浪费,我们可以把各个sprite做成图 ...
- 【Unity3D游戏开发】之Sprite Packer使用方法 (九)[转]
前置说明: 我们用来做sprite 的图片,通常会留有很多空白的地方,我们在画完了sprite之后,这些地方很可能就没有什么作用了.如果想避免这些资源上的浪费,我们可以把各个sprite做成图集,把图 ...
- UPX 加壳工具:The Ultimate Packer for eXecutables
UPX (the Ultimate Packer for eXecutables)是一款先进的可运行程序文件压缩器.压缩过的可运行文件体积缩小50%-70% ,这样降低了磁盘占用空间.网络上传下载的时 ...
- 1秒破解 js packer 加密
原文:1秒破解 js packer 加密 其实有点标题党了,不过大概就是这个意思. 进入正题, eval(function(p,a,c,k,e,d){e=function(c){return(c< ...
- 转载+自练(莫喷)怎样在cocos2d 2.1.4里面使用动画和Texture Packer
本文实践自 Ray Wenderlich.Tony Dahbura 的文章<How to Use Animations and Sprite Sheets in Cocos2D 2.X>, ...
- Packer piplines and workflow
packer对docker和aws AMI的支持都很好,来上个图: 配套的模版长这样: { "variables": { "name": "webim ...
随机推荐
- Python : Module
在Python中,一个.py文件代表一个Module.在Module中可以是任何的符合Python文件格式的Python脚本.了解Module导入机制大有用处. 1 Module 组成 1.1 Mod ...
- 笔记:Maven 创建 Nexus 私服
首先从 http://nexus.sonatype.org/downloads/ 下载最新版本的Nexus,下载 bundle 包,不需要Web容器. windows 系统安装 目录结构说明 目录 说 ...
- Guava常用方法
简介 Guava,中文是石榴的意思,Guava项目,是基于java的Google的开源的工具类库,包含了许多被Google的java项目广泛依赖的核心库, 例如:集合.缓存.原生类型支持.并发库.通用 ...
- Java实现单向链表反转
public class LinkedListTest { public static void main(String[] args) { Node A = new Node("A&quo ...
- js 关于日期,字符串转化
<html><head><title>简单获取日期的JS</title><meta http-equiv="Content-Type&q ...
- Android 的消息队列模型
Android 的消息队列模型 Android是参考Windows的消息循环机制来实现Android自身的消息循环的. Android通过Looper.Handler来实现消息循环机制,Andr ...
- Elasticsearch安装详解
本文只介绍在windows上的安装和配置,其他安装和配置请参见官方文档 ES在windows上安装需下载zip安装包,解压后bin目录下有个 elasticsearch-service.bat 文件. ...
- C作业--数据类型
一.PTA实验作业 题目1:7-3 倒顺数字串 1. 本题PTA提交列表 2. 设计思路(伪代码) (1)本题是要求输入倒顺序数串,首先看到这种题肯定是需要用到循环,那就先定一个整形i来进行循环,n是 ...
- 项目Beta冲刺第二天
1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:昨天主要是在确认需求方面花了一些时间,后来终于确认了企业自查风险模块的需求问题 今天解决的进度:根据昨天确认下来的需求,我们基本上完成了 ...
- Vue.js学习
<!DOCTYPE html> <html> <head> <title>xxx</title> </head> <bod ...