十 OpenStack自定義例項(Cloud-Init)
阿新 • • 發佈:2018-12-31
(本文所有提及OSP=OpenStack Platform)
1 建立自定義例項
1)Cloud-Init :
- cloud-init是對例項執行初始化的軟體。它包含系統RPM中,是一個提供的基礎映象
- 管理員可使用cloud-init 來執行的任務包括包括:
- 設定預設的區域一更新例項主機名
- 生成或注入SSH私鑰以允許免密碼登入
- 設定臨時掛載點。共享儲存是水平擴充套件應用的通用要求
- cloud-init可以通過user-data 呼叫,後者是例項啟動時使用者提供的資料。提供的指令由cloud-init 讀取並解析,從而自定義例項
- OpenStack也通過cloud-init 實施例項管理。使用者可以在Horizon 控制面板中啟動例項, 然後使用Configuration 選項卡指定要應用的自定義設定
2) cloud-init資料格式:
- cloud-init包含對多種資料格式的支援,靈活性更強支援使用gzip 來壓縮資料。當資料大小超過16384 位元組大小限制時,壓縮可以發揮作用
- 管理員可以使用MIME存檔來包含多種型別的資料。例如, 可以同時包含user-data指令碼和cloud-config 型別
- 支援開頭為#!或Content-Type: text/x-shellscript的 user-data指令碼。該指令碼於例項第一次引導期間在rc.local 級別執行。此指令碼的執行與系統上的任何其他指令碼類似
- cloud-init支援包含其他檔案。資料宣告的開頭必須為#include 或Content-Type: text/x-include-url。此宣告指定要包含的檔案。檔案中包含URL列表,每行一個。每一個URL都將被讀取,其內容通過同一組規則進行傳遞;即,從URL讀取的內容可以是gzip 壓縮資料、MIME多部件或純文字
- 支援cloud-config格式的資料。資料宣告的開頭必須為#cloud-config 或Content-Type: text/cloud-config
- Upstart作業也有效。資料宣告的開頭必須為#upstart-job 或Content-Type:text/upstart-job。其內容放入/etc/init 下的檔案,供upstart 使用
- 支援Cloud Boothook格式的資料。資料宣告的開頭必須為#cloud-boothook或Content-Type:text/cloud-boothook。boot hook是最早的執行時間段
3)user-data指令碼:
- user-data 指令碼提供了一種便捷的方式,供管理員供在例項建立時向例項傳送指令集合
- 該指令碼在rc.local級別呼叫,這是引導流程中的最後一個級別
4)cloud-config :
- 除了使用shell 指令碼外,管理員還可在cloud-config 語法中指定自定義,以使用者友好的格式提供指令,檔案必須是有效的YAML, 以便它能夠被cloud-init 解析並執行
- 這些指令包括:
- 在第一次引導時使用yum更新系統,這可以防止開放或許沒有安裝最新安全更新的例項
- 新增新的yum儲存庫,以允許根據例項的角色來訪問不同的軟體包
- 匯入SSH金鑰,這可免除基於密碼登入的要求,並且防止暴力攻擊實施成功
- 建立使用者,這可能是備份或監控的第三方代理的需求
5)建立自定義例項(Horizon控制面板) :
- 在Web瀏覽器中開啟Horizon 控制面板URL,再導航到Project>Compute > Instances單擊Launch Instance
- 填充Details、 Source、 Flavor 和Networks 選項卡中的欄位。(可選)在SecurityGroups和Key Pair選項卡中進行更改
- 在Configuration選項卡中,直接在Configuration Script欄位中提供您的自定義命令,或者上傳指令碼檔案單擊Launch Instance
- 例項標記為Active 後,將浮動IP地址與它連線
- 開啟終端,再使用ssh 命令登入例項。使用相應的私鑰,連線浮動IP地址查詢cloud-init 服務的狀態,確保它已啟用並正在執行
- 建立自定義例項(命令列) :
- 開啟終端,再提供keystone憑據檔案。
- 建立包含cloud-init 指令的檔案。指令可以使用cloud-init 支援的任何格式,如簡單的shell 指令碼。
- 啟動例項,並將–user-data /path_ to/your_ file作為引數傳遞。
- 例項狀態為Active 時,連線一個浮動IP地址。
- 開啟終端,通過ssh 並使用浮動IP地址及相應的私鑰登入例項。
- 查詢cloud-init 服務的狀態,確保它已啟用並正在執行