開源工具 Packer 能夠便捷建立自訂鏡像。它能運行在大多數主流作業系統上。參閱本文安裝並使用Packer,輕鬆建立自訂鏡像。
说明 本文描述僅適用於運行Linux作業系統的伺服器。
1. 安裝Packer
您可以進入 Packer 官網下載頁面,選擇下載與您作業系統對應的版本,參閱以下步驟或者訪問Packer 官方安裝說明 安裝 Packer。
- 串連並登入到Linux伺服器。如果您的伺服器為ECS Linux執行個體,可參閱文檔 使用使用者名密碼驗證串連 Linux 執行個體。
- 執行命令
cd /usr/local/bin
進入/usr/local/bin目錄。说明 /usr/local/bin 目錄為環境變數目錄,您可以將 Packer 安裝到該目錄下或其他已添加到環境變數的目錄下。 - 執行命令
wget https://releases.hashicorp.com/packer/1.1.1/packer_1.1.1_linux_amd64.zip
獲取Packer安裝包。您可以訪問 Packer 下載頁面獲取其他版本Packer安裝包。 - 執行命令
unzip packer_1.1.1_linux_amd64.zip
解壓檔案。 - 執行命令
packer -v
驗證Packer安裝狀態。若Linux伺服器返回Packer版本號碼,表示您已正確安裝Packer。若Linux伺服器提示command not found表示Packer未正確安裝。
2. 定義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
|
secret_key | 您的AccessKeySecret。更多詳情,參閱 建立AccessKey |
region | 建立自訂鏡像時使用臨時資源的地域 |
image_name | 自訂鏡像的名稱 |
source_image | 基礎鏡像的名稱,可以從阿里雲公共鏡像列表獲得 |
instance_type | 建立自訂鏡像時生成的臨時執行個體的類型 |
internet_charge_type | 建立自訂鏡像時臨時執行個體的公網頻寬付費類型 |
provisioners | 建立自訂鏡像時使用的 Packer 配置器 類型 |
3. 使用Packer建立自訂鏡像
指定Packer模板檔案生成自訂鏡像:
- 匯入您的AccessKeyID:運行
export ALICLOUD_ACCESS_KEY=您的 AccessKeyID
。 - 匯入您的AccessKeySecret:運行
export ALICLOUD_SECRET_KEY=您的 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
下一步
參考連結
- 訪問阿里雲GitHub Packer倉庫 packer-provider 獲取更多資訊。
- 參閱 Packer官方文檔 瞭解更多Packer使用詳情。