Packer是一款輕量級的鏡像定義工具,能夠運行在常用的主流操作系統上。本教程介紹了通過創建一個JSON格式的Packer模板文件來構建ECS自定義鏡像。
教程介紹
以下步驟及示例均已在 Alibaba Cloud Shell 中集成。您可以在 Cloud Shell 中打開,快速體驗通過Packer模板文件來構建您的ECS自定義鏡像。
安裝Packer
您可以在 Packer官網頁面獲取不同平臺最新版本的Packer,選擇下載與您操作系統對應的版本。并通過以下示例或者訪問Packer官方安裝說明來安裝Packer。
mkdir -p $HOME/bin
curl https://shell-image-softwares-cn-shanghai.oss-cn-shanghai.aliyuncs.com/packer/packer_1_3_5.tar.gz | tar zxv -C $HOME/bin
定義Packer模板
使用Packer創建自定義鏡像時,需要先創建一個JSON格式的模板文件。在該模板文件中,您需要指定創建自定義鏡像的Alicloud Image Builder(生成器)和Provisioners(配置器)。Packer具有多種配置器,可用于配置自定義鏡像的內容生成方式。
本教程以常用的Shell配置器為例,定義了一個名為alicloud.json的Packer模板,模板內容如下:
{
"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_basic",
"source_image":"centos_7_02_64_20G_alibase_20170818.vhd",
"ssh_username":"root",
"instance_type":"ecs.n1.tiny",
"internet_charge_type":"PayByTraffic",
"io_optimized":"true"
}],
"provisioners": [{
"type": "shell",
"inline": [
"yum install redis.x86_64 -y"
]
}]
}
您可以執行cat alicloud.json命令查看模板詳情。
本示例中,將創建一個含Redis的自定義鏡像。
您可以通過以下參數自定義您的模板文件:
參數名 | 說明 |
access_key | 您的AccessKey ID。 |
secret_key | 您的AccessKey Secret。 |
region | 創建自定義鏡像時使用臨時資源的地域。 |
image_name | 自定義鏡像的名稱。 |
source_image | 基礎鏡像的名稱,可以從阿里云公共鏡像列表獲得。 |
instance_type | 創建自定義鏡像時生成的臨時實例的類型。 |
internet_charge_type | 創建自定義鏡像時臨時實例的公網帶寬付費類型。 |
provisioners | 創建自定義鏡像時使用的Packer配置器類型。 |
使用Packer創建自定義鏡像
在使用上述Packer模板文件創建ECS自定義鏡像之前,您需要確保您已有ECS的相關操作權限。如果已開放權限,在Alibaba Cloud Shell環境下,可以直接執行如下命令來構建鏡像。
packer build alicloud.json
示例運行結果如下:
alicloud-ecs output will be in this color.
==> alicloud-ecs: Prevalidating alicloud image name...
alicloud-ecs: Found image ID: centos_7_02_64_20G_alibase_20170818.vhd
==> alicloud-ecs: Start creating temporary keypair: packer_59e44f40-c8d6-0ee3-7fd8-b1ba08ea94b8
==> alicloud-ecs: Start creating alicloud vpc
---------------------------
==> alicloud-ecs: Provisioning with shell script: /var/folders/3q/w38xx_js6cl6k5mwkrqsnw7w0000gn/T/packer-shell257466182
alicloud-ecs: Loaded plugins: fastestmirror
---------------------------
alicloud-ecs: Total 1.3 MB/s | 650 kB 00:00
alicloud-ecs: Running transaction check
---------------------------
==> alicloud-ecs: Deleting temporary keypair...
Build 'alicloud-ecs' finished.
==> Builds finished. The artifacts of successful builds are:
--> alicloud-ecs: Alicloud images were created:
cn-beijing: m-2ze12578be1oa4ovs6r9
更多信息
獲取更多信息,請參見阿里云GitHub Packer倉庫packer-provider。
了解更多Packer使用詳情,請參見Packer官方文檔。