天天看點

Metadata Service 最高頻的應用 - 每天5分鐘玩轉 OpenStack(164)Metadata Service最高頻的應用

實作 instance 定制化,cloud-init(或 cloudbase-init)隻是故事的一半,metadata service 則是故事的的另一半。兩者的分工是:metadata service 為 cloud-init 提供自定義配置資料,cloud-init 完成配置工作。

前面讨論了一些 cloud-init 和 cloudbase-init 相關的經驗,收到了很多回報,大家對 instance 啟動時是如何完成自定義配置這個過程非常感興趣,希望能夠系統講一下。這個主題确實很重要,實際應用場景很多,确實很有必要系統讨論一番,作為對現有教程的補充。

instance 是通過 image 部署出來的,image 中包含了作業系統(例如 Ubuntu 16.04),最常用的軟體(例如 SSH)以及最通用的配置(例如 eth0 dhcp)。然而在建立 instance 的時候,我們往往希望對 instance 進行一些額外的配置,比如:安裝某些包、開啟一些服務、添加 SSH 秘鑰、配置 hostname 等等。

有幾個方法可以完成這項工作:

1. 将這些東西統統做到 image 中。

這種方案可以實作,但不現實。image 應該被看着是一個模闆,存放的是通用的内容。在 image 中加入個性化配置的做法要麼使 image 變得非常龐雜,要麼導緻數量衆多的 image,不易管理。

2. instance 部署出來之後手工完成個性化配置。

由于需要手工操作,instance 數量多了之後工作量會激增,而且容易出錯。

3. 推薦方案:由 OpenStack Metadata Service 提供 instance 的配置資訊(這些資訊被統稱為 metadata)。instance 啟動時向 Metadata Service 請求并獲得自己的 metadata,instance 的 cloud-init(或 cloudbase-init)根據 metadata 完成個性化配置工作。

這個方案的優點是不需要修改基礎 image,保證了 image 的穩定性,同時實作了 instance 自動化地個性配置。

将 ssh public key 添加到 instance。

首先在 “Project -> Compute -> Access & Security” 中建立 Key Pair。

OpenStack 會建立一對 ssh pulbic key 和 private key,public key 存放在 OpenStack 資料庫中,private key 會在我們點選 “Create Key Pair” 按鈕時自動下載下傳。

現在 "cloudman" 這個 key pair 就是我們要用的 metadata 了。部署 instance 時,選擇 "cloudman"。

instance 啟動後,可以看到這個 cloudman 的 public key 已經儲存到 .ssh/authorized_keys 中了。

這樣我們就可以用 cloudman 的 private key 直接登入 instance。

本節我們了解了 Metadata Service 的概念及其作用,并通過一個例子獲得了些感性認識。下一節就要深入學習了,我們将從 Metadata Service 的架構開始。

本文轉自CloudMan6 51CTO部落格,原文連結:http://blog.51cto.com/cloudman/1907495