本篇來介紹 Hashicorp 旗下其中一個產品叫 Packer,其實在 Hashicorp 旗下有很多其他雲端工具都非常好用,如果大家有興趣都可以上官網參考看看。而 Packer 是用來產生各大雲平台映像檔的工具,平行產生 AWS, GCP, Docker 或 DigitalOcean … 等等眾多雲平台之映像檔對 Packer 來說相當容易,詳細可以參考這邊,也就是說透過 Packer 來統一管理各大雲平台的映像檔,用 JSON 檔案進行版本控制。假設您有需求要管理工程團隊所使用的 Image,你絕對不能錯過 Packer。Packer 不是用來取代像是 Ansible 或是 Chef 等軟體,而是讓開發者更方便整合 Ansible .. 等第三方工具,快速安裝好系統環境。
影片教學
如果不想看底下文字介紹,可以直接參考 Youtube 影片: 如果您對 Drone 整合 Docker 有興趣,可以直接參考線上課程
- 一天學會 DEVOPS 自動化流程 $1800
買了結果沒興趣想退費怎麼辦?沒關係,在 Udemy 平台 30 天內都可以全額退費,所以不用擔心買了後悔。
自動建立 AWS AMI 映像檔
不多說直接拿實際例子來實做看看,假設我們有個需求,就是需要產生一個 AMI 裡面已經內建包含了 Docker 服務,該如何來實現呢?底下是 Packer 所撰寫的 JSON 檔案,底下範例可以直接在這邊找到
|
|
第一部分 variables
讓開發者可以定義變數,可以讀取系統環境變數,第二部分 builders
就是用來定義要產生不同平台的 Image,像是 GCP 或 AWS,可以看到是傳入一個 Array 值,上面的例子就是要產生 AWS AMI,所以設定 "type": "amazon-ebs"
,第三部分 provisioners
,就是來寫 script,映像檔預設可能會有一些檔案,或者是預設安裝一些工具,看到 type 可以是 file
、shell
等等,也就是說 provisioners
可以讓開發者安裝套件,更新 Kernel,建立使用者,或者是安裝下載 application source code。這對於部署來說是一個非常棒的工具。
執行 Packer
完成上述 JSON 檔案後,就可以透過 Packer 來產生 AWS AMI 了
|
|
透過 -var-file
將隱秘資訊寫到檔案內,像是 AWS Secret Key 等等。
整合 Drone CI/CD
上一個步驟可以透過指令方式完成映像檔,本章節會教大家如何跟 Drone 整合,這邊可以直接使用 drone-packer 套件,使用文件也已經放到 drone plugin 首頁了。使用方式非常簡單,請參考底下範例:
其中 template 請輸入 json 檔案路徑,actions 目前只有支援 validate
跟 build
,我建議兩者都寫,先驗證 json 檔案是否寫錯,再執行 build。另外我們可以看到
|
|
請注意記得將敏感資訊綁定在 -image
身上,避免被偷走。上面的範例,可以直接參考 go-ggz/packer。
See also
- 開源專案 Drone CI/CD 平台真的免費嗎?
- Go 1.15 新增 Module cache 環境變數
- Docker 推出官方 GitHub Actions 套件
- 用五分鐘安裝好 Drone 搭配 GitHub 自動化環境
- 用 Drone 部署靜態檔案到 GitHub Pages
- Drone CI/CD 支援 Auto cancellation 機制
- Ansible 設定 Google Container Registry 搭配 Drone 自動上傳
- 用 Drone 自動化上傳 Docker Image 到 GitHub Docker Registry
- 用 10 分鐘安裝好 Drone 搭配 GitLab
- [Drone] 將單一 Job 分配到多台機器,降低部署執行時間