Packer创建阿里云本地镜像
Packer創建阿里云本地鏡像
通過手工創建在本地鏡像,并且上傳到云環境是一個復雜而易錯的過程,而packer的出現極大的降低了這種復雜度,本文詳細了講解了如何在ubuntu(16.04或者更高版本)系統基于packer創建centos 6.8的鏡像并上傳到阿里云自定義鏡像的全過程。
1.準備
1.1安裝kvm
- 首先查看cpu是否支持kvm,執行如下命令,如果有類似下面的輸出,就是支持kvm:
- 打開終端然后執行如下命令安裝kvm :
- 安裝結束后,可以執行如下命令,會出現virt-manager的界面,如果通過通過GUI創建虛擬機,那么kvm就安裝完了
1.2申請工單
由于阿里云的鏡像導入功能默認并不是開放的,所以在運行本示例前需要通過工單申請開通鏡像上傳功能,可以登錄阿里云控制臺,導航到鏡像列表欄目,如果右部的”刷新“按鈕旁邊象下圖一樣沒有”導入鏡像“按鈕,就需要“點擊頂部的“工單”按鈕,然后在工單管理頁面通過如下步驟提交工單:
”提交工單“->"云服務器 ECS”->點擊“提問”按鈕->"鏡像咨詢“->"4. 如何把本地物理鏡像導入到 ECS 中使用?"
在低部選擇”提交工單”按鈕。
在"問題描述:“文本框中輸入如下內容,然后填寫其它必要信息,提交工單,等候工作人員批準。
如果理由合理,一般一天左右,工單就會被批準,這些鏡像列表欄目的右上部就會出現如下圖的”導入鏡像“按鈕
1.3開通OSS
由于阿里云鏡像上傳功能需要通過OSS中轉,所以如果還沒有開通OSS,可以通過點擊如下OSS控制臺按照開通向導,一步一步的輸入必要信息來開通OSS,由于過程并不復雜,本文就不贅述了。
2.安裝packer和阿云插件
首先從Packer官網下載對應操作系統的安裝包,點擊如下圖的官網鏈接下載packer安裝包
然后打開終端,導航到下載目錄下,執行如下命令,如果得到如下圖的輸出,packer就安裝好了:
由于阿里云的packer插件提交還在流程中,所以還需要從阿里云的開源站點下載阿里云的packer插件,然后執行如下命令,如果輸出如下,插件就安裝好了:
#tar -xvf packer-builder-alicloud-ecs_linux-amd64.tgz #sudo mv bin/* /usr/local/bin/ # ls /usr/local/bin | grep packerpacker packer-builder-alicloud-ecs packer-post-processor-alicloud-import3.本地鏡像的制作
從阿里云的官方插件站點下載 centos.json 和ks.cfg,cetnos.json的內容如下,
{"variables": {"box_basename": "centos-6.8","build_timestamp": "{{isotime \"20060102150405\"}}","cpus": "1","disk_size": "4096","git_revision": "__unknown_git_revision__","headless": "","http_proxy": "{{env `http_proxy`}}","https_proxy": "{{env `https_proxy`}}","iso_checksum": "0ca12fe5f28c2ceed4f4084b41ff8a0b","iso_checksum_type": "md5","iso_name": "CentOS-6.8-x86_64-minimal.iso","ks_path": "centos-6.8/ks.cfg","memory": "512","metadata": "floppy/dummy_metadata.json","mirror": "http://mirrors.aliyun.com/centos","mirror_directory": "6.8/isos/x86_64","name": "centos-6.8","no_proxy": "{{env `no_proxy`}}","template": "centos-6.8-x86_64","version": "2.1.TIMESTAMP"},"builders":[{"boot_command": ["<tab> text ks=http://{{ .HTTPIP }}:{{ .HTTPPort }}/{{user `ks_path`}}<enter><wait>"],"boot_wait": "10s","disk_size": "{{user `disk_size`}}","headless": "{{ user `headless` }}","http_directory": "http","iso_checksum": "{{user `iso_checksum`}}","iso_checksum_type": "{{user `iso_checksum_type`}}","iso_url": "{{user `mirror`}}/{{user `mirror_directory`}}/{{user `iso_name`}}","output_directory": "packer-{{user `template`}}-qemu","shutdown_command": "echo 'vagrant'|sudo -S /sbin/halt -h -p","ssh_password": "vagrant","ssh_port": 22,"ssh_username": "root","ssh_wait_timeout": "10000s","type": "qemu","vm_name": "{{ user `template` }}.raw", "net_device": "virtio-net","disk_interface": "virtio","format": "raw"}], "post-processors":[{"type":"alicloud-import","oss_bucket_name": "packer","image_name": "packer_import","image_os_type": "linux","image_platform": "CentOS","image_architecture": "x86_64","image_system_size": "40","region":"cn-beijing"}] }在終端中執行如下命令設置阿里云訪問的AK
#export ALICLOUD_ACCESS_KEY="<你的access_key>" #export ALICLOUD_SECRET_KEY="<你的secret_key>"你可以從阿里云控制臺獲取訪問的AK,打開控制臺登錄后,點擊頁面右上角的登錄名,出現如下圖菜單,在菜單中選擇accesskeys按鈕
然后在Access key管理頁面點擊右上角的"創建Access Key"按鈕,創建新的Access Key ID和Access Key Secret,將值替換模板中或者設置如上的環境變量。
在終端中,導航到centos.json文件所在的目錄,執行
由于鏡像有4G的大小,上傳到OSS會是一個漫長的過程,如果中間沒有出錯,當看到成功提示的結果,你就可以如下圖在鏡像列表中看到創建的自定義鏡像。
4.展望
從上面的過程看,即使有了packer的幫助,制作一個本地的自定的鏡像也不是一件容易的事情,但是隨著開源社區的發展,對于常用的鏡像模板,會非常容易的從社區獲得,而且packer本身也比較年輕,隨著功能的不斷完善,鏡像的制作一定會變得越來越容易。也希望大家能夠為packer的完善貢獻自己的力量。
packer的資源庫
阿里云開源插件工具資源庫
總結
以上是生活随笔為你收集整理的Packer创建阿里云本地镜像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyBatis基本配置和实践(三)
- 下一篇: SheetJS中文文档-js导出Exce