Contents

Linux - RHV 使用 Template 模板與 Cloud-init

在公有雲上建置的虛擬機器都會產生專門的主機名跟其內容,在 RHV 中也能透過 Cloud-init 方式再啟動自動部屬虛擬機器,也可以藉由 Template 模板大量部屬機器。

1. RHV 簡介

紅帽虛擬化 (Red Hat Virtualization) 是一個開放、軟體定義、容易使用的基礎架構與集中式管理平台,適用於 Linux 虛擬化的平台,底層基本 KVM 技術架構,可以較低成本建置企業內部的虛擬化平台,並且可以在短時間內完成部屬與啟用。

https://hackmd.io/_uploads/BJcPMjrWn.png
From www.redhat.com

開源上游版
所有紅帽系列產品都有上開源版,對於 RHV 來說上游就屬於 oVirt 組織

2. 創建 Template 模板

透過 ISO 創建虛擬機先決必要條件 :

必須下載 RHV CA 憑證並由瀏覽器認證 (僅需認證一次即可),否則會因憑證導致瀏覽器禁止上傳檔案而失敗。

  1. 至登入頁面 https://rhvm.lab.example.com 下載 CA Certificate。

https://hackmd.io/_uploads/S1Ual2LZ3.png"下載CA憑證"

  1. 以 FireFox 為例選擇設定並且匯入憑證。

https://hackmd.io/_uploads/rJ5nenUZ2.png"匯入憑證"

  1. 將下載的憑證匯入(檔案如未找到請選擇所有檔案格式)。

https://hackmd.io/_uploads/B16jxnUbh.png"檔案類型"

  1. 信任此 CA 來辨識網站。

https://hackmd.io/_uploads/Hkkjlh8-h.png"信任CA"

  1. 網頁連線就會顯示安全性連線。

https://hackmd.io/_uploads/S1zqehIbh.png
安全連線

2.1. 上傳 Fedora qcow2 至 RHV

Fedora 37 Cloud Base Images下載連結請點我

cloud-init 套件
如果想要使用已經存在的 RHEL 系列可以使用 yum -y install cloud-init 安裝,就可以自行客製所需的機器模板。
  1. 使用 admin 登入 https://rhvm.lab.example.com 頁面後選擇 Storage -> Disks -> Upload 。

https://hackmd.io/_uploads/r1u_e38-3.png

  1. 點擊 Fedora qcow2 作為上傳 Image 後點擊 OK 上傳。

https://hackmd.io/_uploads/ryaVSJwZ3.png
upload qcow2

重要
如果執行 Test Connection 出現下列失敗,表示未進行 CA 憑證匯入。 https://hackmd.io/_uploads/B1x4gn8-h.png
  1. 上傳後從 Lock 狀態變成 OK 表示上傳完畢。

https://hackmd.io/_uploads/rk8Kr1wWh.png
qcow2 status

2.2. 製作 Templates 模板

  1. 選擇左側 Computer -> Virtual Machines -> New 新增虛擬機器。

https://hackmd.io/_uploads/r1ar-nU-h.png

  1. 創建新虛擬機。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
1. 作業系統 : Linux
2. 虛擬機 SIZE : Small
        Tiny:    CPU: 1 ,RAM : 512  MB
        Small:   CPU: 1 ,RAM : 2084 MB
        Medium:  CPU: 2 ,RAM : 4096 MB
        Large:   CPU: 4, RAM : 8192 MB
        XLarge:  CPU: 4, RAM :16384 MB
        Custom :  自定義
3. 最佳化 : Server ( Desktop, Server, High Perfomance )
4. 虛擬機名稱 : fedora37-base
5. 硬碟選擇 Fedora37.qcow Image

https://hackmd.io/_uploads/Bym3SyDWh.png
Create base vm

  1. 選擇新創建的虛擬機,並點擊右方漢堡圖案選擇製作模板。

https://hackmd.io/_uploads/rJwbL1vW2.png
Make template

  1. 模板名稱與 Alias 命名為 Fedora37-Template,並點擊 Ok 創建。

https://hackmd.io/_uploads/ryI88kwWh.png
New template

  1. 至 Computer -> Templates 頁面等待模板建立完成。

https://hackmd.io/_uploads/By1iL1vb3.png
Check template status

3. 使用 cloud-init

  1. 選擇左側 Computer -> Virtual Machines -> New 新增虛擬機器。

https://hackmd.io/_uploads/r1ar-nU-h.png

  1. 選擇模板創建虛擬機器
1
2
3
4
1. Template 選擇 Fedora37-Template
2. 虛擬機 Type 選擇 small
3. 名稱命名為 Fedora37-cloud
4. 網卡選擇 ovirtmgmt/ovirtmgmt

https://hackmd.io/_uploads/B19Kw1Pbh.png
Create vm

  1. 左側選擇 Inital Run,並輸入下列參數點擊 OK 產生虛擬機器。
1
2
3
4
5
6
7
8
9
1. 確保 Use Cloud-Init/Sysprep 開啟
2. VM Hostname : Lab-cloud
3. User Name: student
4. Password : student
5. 啟動腳本:
    write_files:
      - path: /etc/motd
        content: |
          This VM has been provisioned using cloud-init. 

https://hackmd.io/_uploads/BkVZs1w-2.png
cloud init setup

重要
cloud-init 所用的 YAML 對於空格縮排特別要求,請嚴格對其縮排格式(請勿使用 TAB),並在最後一行加上一個空白。
  1. 執行虛擬機器,透過 console ,登入帳號 : student ,密碼 : student ,應顯示 This VM has been provisioned using cloud-init.

https://hackmd.io/_uploads/BJbOKyv-2.png
vm console

  1. 透過查看 /var/log/cloud-init.log 可以看出 Cloud-init 執行的 Log 紀錄。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[student@Lab-cloud ~]$ tail /var/log/cloud-init.log
2023-04-02 11:14:18,495 - cc_power_state_change.py[DEBUG]: no power_state provided. doing nothing
2023-04-02 11:14:18,495 - handlers.py[DEBUG]: finish: modules-final/config-power-state-change: SUCCESS: config-power-state-change ran successfully
2023-04-02 11:14:18,495 - main.py[DEBUG]: Ran 20 modules with 0 failures
2023-04-02 11:14:18,495 - atomic_helper.py[DEBUG]: Atomically writing to file /var/lib/cloud/data/status.json (via temporary file /var/lib/cloud/data/tmpgkql5yy3) - w: [644] 604 bytes/chars
2023-04-02 11:14:18,496 - atomic_helper.py[DEBUG]: Atomically writing to file /var/lib/cloud/data/result.json (via temporary file /var/lib/cloud/data/tmpw2gr7zm0) - w: [644] 103 bytes/chars
2023-04-02 11:14:18,496 - util.py[DEBUG]: Creating symbolic link from '/run/cloud-init/result.json' => '../../var/lib/cloud/data/result.json'
2023-04-02 11:14:18,496 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
2023-04-02 11:14:18,496 - util.py[DEBUG]: Read 11 bytes from /proc/uptime
2023-04-02 11:14:18,496 - util.py[DEBUG]: cloud-init mode 'modules' took 0.298 seconds (0.30)
2023-04-02 11:14:18,496 - handlers.py[DEBUG]: finish: modules-final: SUCCESS: running modules for final

5. 小結

RHV 虛擬化的私有化雲平台功能十分完整且強大,可以透過多個二手 X86 機器組成一個強大的虛擬化平台 ( CPU Family 盡可能一致),讓舊電腦也能發揮出最大的功效。



如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!