天天看點

使用 Packer 建立自定義鏡像

使用 Packer 建立自定義鏡像

鏡像下載下傳、域名解析、時間同步請點選

阿裡巴巴開源鏡像站

背景資訊

本文描述以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 使用者
secret_key 您的AccessKeySecret。更多詳情,請參見
region 建立自定義鏡像時使用臨時資源的地域。
image_name 自定義鏡像的名稱。
source_image 基礎鏡像的名稱,可以從阿裡雲公共鏡像清單獲得。
instance_type 建立自定義鏡像時生成的臨時執行個體的類型。
internet_charge_type 建立自定義鏡像時臨時執行個體的公網帶寬付費類型。
provisioners 建立自定義鏡像時使用的Packer配置器類型。詳情請參見 Packer配置器

三、使用Packer建立自定義鏡像

指定Packer模闆檔案生成自定義鏡像的操作步驟如下:

  1. 運作指令

    export ALICLOUD_ACCESS_KEY=<您的AccessKeyID>

    導入您的AccessKeyID。
  2. export ALICLOUD_SECRET_KEY=<您的AccessKeySecret>

    導入您的AccessKeySecret。
  3. 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           
提供全面,高效和穩定的系統鏡像、應用軟體下載下傳、域名解析和時間同步服務。”