989
技術社區[雲棲]
雲生態下的鏡像管理利器Packer
About Packer
Packer (https://www.packer.io/)是Hashicorp 組織旗下的一款DevOps運維工具,可以看下整個軟件交付周期所處的位置:
Packer是一款麵向雲生態非常便利的鏡像管理利器,通過一個模板配置可以快速的創建鏡像。
當前支持阿裏雲、AWS、Azure、Vmware、Google Cloud Platform、DigitalOcean 等多個雲廠商平台。通過Packer,可以在創建鏡像過程中,執行相應的腳本文件,或者安裝目標軟件,執行配置係統等操作,可提升係統應用交付效能。
Install Packer
Packer可以安裝在多個係統平台上
通過https://www.packer.io/downloads.html 可以下載相應的可執行二進製包,配置好相應的PATH則可使用Packer Command,如下:
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:
注意事項:上麵配置的sleep 30非常關鍵,因為在創建鏡像的過程中,是構建了完整的VM實例,這中間需要通過SSH上去執行指令的過程中,可能係統尚未完成整改初始化過程,所以需要做一個30秒的時間等待。
Parallel Builds
Packer 同時支持多平台創建一個鏡像,如下在AWS、DigitalOcean 創建鏡像,隻不過這裏需要製定好各自平台的AK、API-Token:
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
如上可以看到該過程完成了資源的創建和釋放的過程,執行後到阿裏雲管控控製台查看ECS自定義鏡像:
最後更新:2017-09-18 21:33:44
上一篇:
iOS 防 DNS 汙染方案調研--- HTTPS(非SNI) 業務場景
下一篇:
三十分鍾熟悉es6(es6常用功能總結)
UbuntuEclipse顏色提示修改(WinXP窗口背景顏色修改)+快捷方式啟動
H5響應式網站,“十大神器”輕鬆製作
Windows環境中通過WMareWare安裝ubantu
《創業在路上》讓充電像唿吸一樣輕鬆
2013騰訊編程馬拉鬆初賽
解決UBUNTU下用WINE報 “CAN’T FIND MFC42.DLL….BALABALA”問題
HTAP數據庫 PostgreSQL 場景與性能測試之 32 - (OLTP) 高吞吐數據進出(堆存、行掃、無需索引) - 閱後即焚(JSON + 函數流式計算)
使用C#調用旋風快車和迅雷下載文件 也是C#調用Com的好例子!
hql大全
android的文件操作