鏡像下載、域名解析、時間同步請點擊 阿里巴巴開源鏡像站
背景信息
本文描述以Linux系統的服務器為例,Windows系統的操作請參見Packer官方文檔。
一、安裝Packer
1、連接並登錄到Linux服務器。登錄ECS Linux實例服務器,請參見使用用戶名密碼驗證連接Linux實例。
2、執行命令cd /usr/local/bin
進入/usr/local/bin目錄。
cd /usr/local/bin
說明: /usr/local/bin目錄為環境變量目錄,您可以將Packer安裝到該目錄下或其他已添加到環境變量的目錄下。
3、執行命令wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip
獲取Packer安裝包。訪問Packer下載頁面,獲取其他版本Packer安裝包。
wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip
4、執行命令unzip packer_1.1.1_linux_amd64.zip
解壓文件。
unzip packer_1.1.1_linux_amd64.zip
5、執行命令packer -v
驗證Packer安裝狀態。
packer -v
- 若Linux服務器返回Packer版本號,表示您已正確安裝Packer。
- 若Linux服務器提示
command not found
表示Packer未正確安裝。
二、定義Packer模板
使用Packer創建自定義鏡像時,需要創建一個JSON格式的模板文件。在該模板文件中,您需要指定創建自定義鏡像的生成器和配置器。詳情請參見Alicloud Image Builder(生成器)和Provisioners(配置器)。Packer具有多種配置器,可用於配置自定義鏡像的內容生成方式,以下以常用的Shell配置器為例,定義Packer模板。
在Linux服務器中創建名為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_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": [
"sleep 30",
"yum install redis.x86_64 -y"
]
}]
}
您需要自定義的參數值如下表所示。
參數 | 描述 |
---|---|
access_key | 您的AccessKeyID。更多詳情,請參見創建AccessKey。 說明 由於AccessKey權限過大,為防止錯誤操作,建議您創建RAM用戶,並使用RAM子賬號創建AccessKey。具體步驟,請參見創建 RAM 用戶和創建AccessKey。 |
secret_key | 您的AccessKeySecret。更多詳情,請參見創建AccessKey。 |
region | 創建自定義鏡像時使用臨時資源的地域。 |
image_name | 自定義鏡像的名稱。 |
source_image | 基礎鏡像的名稱,可以從阿里雲公共鏡像列表獲得。 |
instance_type | 創建自定義鏡像時生成的臨時實例的類型。 |
internet_charge_type | 創建自定義鏡像時臨時實例的公網帶寬付費類型。 |
provisioners | 創建自定義鏡像時使用的Packer配置器類型。詳情請參見Packer配置器。 |
三、使用Packer創建自定義鏡像
指定Packer模板文件生成自定義鏡像的操作步驟如下:
- 運行命令
export ALICLOUD_ACCESS_KEY=<您的AccessKeyID>
導入您的AccessKeyID。 - 運行命令
export ALICLOUD_SECRET_KEY=<您的AccessKeySecret>
導入您的AccessKeySecret。 - 運行命令
packer build alicloud.json
創建自定義鏡像。
示例運行結果如下,以下示例將創建含Redis的自定義鏡像。
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
“ 阿里巴巴開源鏡像站 提供全面,高效和穩定的系統鏡像、應用軟件下載、域名解析和時間同步服務。”