# Dell EMC Unity VSA - Part2: 初始化組態 ###### tags: `dellemc` `unity` [toc] # 準備 UnityVSA ## 使用 GOVC 開啟 UnityVSA 除了使用 vSphere Web Client 控制虛擬機器之外,使用 GOVC 文字界面更能快速啟用及調整組態。使用以下命令開啟 UnityVSA 電源。 ```bash unity='Richard-dellemc-UnityVSA01' govc vm.power -on ${unity} ``` ## 建立 2 組虛擬磁碟作為存儲空間 安裝 UnityVSA 虛擬設備後,並沒有提供存儲空間,需要手動增加虛擬磁碟。使用以下的 GOVC 命令,可建立 2 組虛擬磁碟 100 GB,以作為 UnityVSA 存儲資料的空間。 ```bash govc vm.disk.create -vm ${unity} -name ${unity}/vDisk1 -size 100G govc vm.disk.create -vm ${unity} -name ${unity}/vDisk2 -size 100G ``` 透過 vSphere Web Client 和 Unisphere UI 檢視系統存儲空間。 ![](https://i.imgur.com/RYB37ED.png) 新增虛擬磁碟,UnityVSA 會自動加入。 ![](https://i.imgur.com/XHvwXqI.png) # 初始化連線準備 ## 瀏覽器 使用 Ansible 佈署完成 Unity VSA 時,會將指定的 IP 位址設定,需要 [**第一次登陸**](https://hackmd.io/RQlBdcnuReCYUoLEXdlIdA#%E7%AC%AC%E4%B8%80%E6%AC%A1%E7%99%BB%E9%99%B8) 階段,可以使用 [**瀏覽器**](https://hackmd.io/RQlBdcnuReCYUoLEXdlIdA#%E7%80%8F%E8%A6%BD%E5%99%A8) 或是 [**SSH**](https://hackmd.io/RQlBdcnuReCYUoLEXdlIdA#SSH) 兩種方式連線該 IP 位址。 不過 SSH 服務預設並未啟用,還是需要透過 Remote Console 先啟用服務才可使用。 :::info 目前佈署 UnityVSA, PPDM 和 DDVE,僅有 **DDVE 無法透過 OVF 環境變數配置網路組態**,需要在完成佈署後,透過 Remote Console 登入設定(**`sysadmin/changeme`**),或是透過 DHCP 取得 IP 位址使用瀏覽器連線做後續組態。 ::: 若發現 Unity VSA 的 IP 設定並不正確,可以參考 [[**使用 svc_initial 命令設定**]](https://hackmd.io/RQlBdcnuReCYUoLEXdlIdA#%E8%91%97%E9%99%B8%E5%A4%B1%E6%95%97%EF%BC%9F) 進行調整或配置。 ## uemcli **uemcli 是 Unisphere CLI 命令式界面**,需要額外下載安裝使用。在官網檢視 **Dell Unity Unisphere UEM CLI**,並根據所需安裝的作業系統類型下載對應的版本。因為我使用的是 Fedora Linux,使用 RPM 套件即可。 ```bash $ sudo dnf install UnisphereCLI-Linux-64-x86-en_US-5.2.1.1730628-1.x86_64.rpm ``` 套件安裝完成後,使用超級管理員身份執行以下命令,調整憑證驗證的安全等級,預設為 **`medium`**。 ```bash $ sudo /opt/dellemc/uemcli/bin/setlevel.sh low|medium ``` 接著在本地端使用 **`uemcli`** 命令遠端組態及管理 Unity VSA。可以參考 [[**uemcli 嘗鮮**]](https://hackmd.io/RQlBdcnuReCYUoLEXdlIdA#uemcli-%E5%98%97%E9%AE%AE) 作基本操作。 :::info - 其實就是把 **`uemcli`** 當作文字瀏覽器使用啦! - 身為存儲低階工具人,安裝 **`uemcli`** 應該是最基本的。 - 請參考 **Dell Unity 系列 Unisphere CLI 用戶指南**:[[**英文**]](https://dl.dell.com/content/manual39334587-dell-unity-family-unisphere-command-line-interface-user-guide.pdf?language=en-us&ps=true), [[**簡中**]](https://dl.dell.com/content/manual46008730-dell-unity-%E7%B3%BB%E5%88%97-unisphere-%E5%91%BD%E4%BB%A4%E8%A1%8C%E7%95%8C%E9%9D%A2%E7%94%A8%E6%88%B7%E6%8C%87%E5%8D%97.pdf?language=zh-cn&ps=true) ::: ### 使用 uemcli 連線 既然要自動化一點,評估使用 **`uemcli`** 命令來達成會比較合適。使用 **`uemcli`** 就當作使用瀏覽器連線設備。我們可以使用 **`service:service`** 或是 **`admin:Password123#`** 進行初次登入。 ```bash svc_user='service' svc_pass='service' ## Service 預設密碼 admin_user='admin' admin_pass='Password123#' ## Admin 預設密碼 unity='10.7.155.85' ## 使用 service/admin 用戶檢視系統 uemcli -sslPolicy accept -d ${unity} -u ${svc_user} -p ${svc_pass} /sys/general show -detail uemcli -sslPolicy accept -d ${unity} -u ${admin_user} -p ${admin_pass} /sys/general show -detail ``` 上述命令都會顯示以下錯誤訊息。請先將**預設密碼變更**再試試看吧。 :::warning Change the password and try again. **在進行任何變更前,**必須先同意終端使用者授權合約(EULA)才行**!** You have to accept the End User License Agreement to perform this action. ::: :::info 使用 `uemcli` 命令測試,可以先透過逐行命令了解執行結果,之後再統一整併至單一腳本檔單次執行即可完成任務。 ::: ### 同意 EULA ```bash ## 顯示 ELUA 狀態 uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_pass} /sys/eula show -brief ## 同意 EULA uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_pass} /sys/eula set -agree yes ``` :::info 若 **`uemcli`** 命令執行無誤,會顯示 **`Operation completed successfully`** 訊息。 ::: ### 變更 admin 及 service 預設密碼 使用以下命令範例變更 **`admin`** 和 **`service`** 的預設密碼。 ```bash ## 變更 admin 密碼 admin_new_pass='VMware1!VMware1!' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_pass} /user/account -id user_admin set -passwd ${admin_new_pass} -oldpasswd ${admin_pass} ## 變更 service 密碼 svc_new_pass='VMware1!VMware1!' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /service/user set -passwd ${svc_new_pass} -oldpasswd ${svc_default_pass} ``` :::info - 使用 `uemcli` 並沒有特別困難,只要了解語法架構及所需條件,也可以輕鬆上手。尤其在測試過程中出現錯誤訊息,進行故障排除研讀文件時,更能容易了解相關程序及限制。 - 以上兩個步驟 **同意 EULA** 和 **變更預設密碼**,剛好就是初始化流程最前面的 2 個步驟。 ::: ## 啟用 SSH(選項) 要在 UnityVSA 啟用 SSH 服務,可以透過以下方式達成: - Remote Console/Web 主控台 - uemcli 命令 (建議) ### Remote Console 佈署 UnityVSA 完成後,可以使用 VMware Remote Console 或 Web 主控台,類似像使用 Console 連線設備進行設定。使用 **`service:service`** 登入 Unity VSA(spa),並輸入以下命令啟用 SSH 服務。 ```bash svc_ssh --enable ``` ![](https://i.imgur.com/HUXqc9B.png) :::info [Dell EMC Unity: How to Enable or disable Secure Shell on the system. (User Correctable)](https://www.dell.com/support/kbdoc/en-us/000022526/dell-emc-unity-how-to-enable-or-disable-secure-shell-on-the-system-user-correctable) ::: #### 啟用 SSH 服務 以上 **`uemcli`** 啟用動作完成後,就可以用來啟用 SSH 服務作為第一個測試項目了。 ```bash ## 顯示 SSH 服務狀態 uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /service/ssh show ## 開啟 SSH 服務 uemcli -sslPolicy accept -noHeader -d ${unity} -u ${svc_user} -p ${svc_new_pass} /service/ssh set -enabled yes ``` :::warning - 開啟 **`service/ssh`** 服務,**必須使用 `service` 帳號**。 - 此時預設密碼已經變更,請使用修改過的密碼進行操作。 ::: :::info [Dell EMC Unity: How to change / unlock / reset the admin or service passwords](https://www.dell.com/support/kbdoc/zh-tw/000022355/dell-emc-unity-how-to-change-unlock-reset-the-admin-or-service-passwords) ::: :::info 有沒有發現使用 **`uemcli`** 命令,真的像用瀏覽器操作,只是純文字界面而已! ::: # 初始化配置程序 一般進行配置都是採用瀏覽器登陸 UnityVSA,連線後會自動執行初始化配置精靈。 ![](https://i.imgur.com/KFFNa7D.png) 在進行後續測試之前,讓我們先大致了解一下初始化配置究竟包含了哪些步驟? ## 初始化配置說明 可以登入以下連結,查詢相關說明。 ``` https://<Unity_VSA_IP>/help/webhelp/en_US/unity_c_initial_configuration_wizard.html ``` 配置程序將協助管理者完成以下任務: 1. **Copyright**: 僅在 Unisphere 首次啟動時出現,**接受 EULA 才能繼續**。 2. **Admin and Service Password**: Admin 和 Service 密碼設定。 3. **DNS Servers**: DNS 設定。 4. **Proxy Server**: 代理服務器設定。 5. **NTP Servers**: 系統時間和 NTP 設定。 6. **Unisphere License**: 線上取得並上傳授權許可檔,完成註冊授權。 7. **Pools**: 存儲池設定。 8. **Alerts**: 告警通知設定。 9. **iSCSI Interfaces**: iSCSI 界面設定。 10. **NAS Servers**: NAS 服務設定。 11. **Results**: 初始化配置結果 :::info - 其實初始化程序只是為了簡化 Unity 設備組態,所以只要完成 **步驟 1 ~ 6** 應該就可以了?!其他部份後續都可以單獨設定或重行執行初始化程序達成。 > 目前以 `uemcli` 命令測試,基本上 ***感覺*** 是可以直接完成相關組態,而不用透過初始化程序的。 - 因為是採用 Community Edition 版本進行 UnityVSA 測試,目前最困難的是**授權申請**。需要**直接向 Dell EMC 原廠開立支援申請**,且**註冊授權步驟也是必要的**,否則後續功能皆無法啟用組態。 - 若要重新執行初始化配置程序: 選擇右上方齒輪(**Update System Settings**)更新配置,在新視窗左下方,點擊 **Initial Configuration Wizard**。 ::: ## 配置項目 大致了解初始化配置項目後,就接著逐步透過 **`uemcli`** 來完成吧。 其實進行到此,也已經完成最前面兩個步驟了: 1. **Copyright** ([同意 EULA](#同意-EULA)) 2. **Admin and Service Password** ([變更 admin 及 service 預設密碼](#變更-admin-及-service-預設密碼)) 使用 **`uemcli`** 命令可以透過以下方式輕鬆地完成。 ```bash unity='10.7.155.85' svc_user='service' svc_pass='service' svc_new_pass='VMware1!VMware1!' admin_user='admin' admin_pass='Password123#' admin_new_pass='VMware1!VMware1!' ## 同意 EULA uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_pass} /sys/eula set -agree yes ## 變更 admin 密碼 uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_pass} /user/account -id user_admin set -passwd ${admin_new_pass} -oldpasswd ${admin_pass} ## 變更 service 密碼 uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /service/user set -passwd ${svc_new_pass} -oldpasswd ${svc_pass} ``` ## DNS 設定 使用 `uemcli` 組態 DNS 也是很容易的! 先顯示目前 DNS 組態,現在的確沒有任何設定存在。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/dns/config show 1: Auto enabled = yes Name servers = ``` 使用以下命令組態。 ```bash ## 多筆紀錄使用 ',' 區隔 dns='1.1.1.1,1.0.0.1,1.1.1.2,1.0.0.2' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/dns/config set -nameServer "${dns}" ``` 以 Unisphere UI 確認,選擇 **Settings** > **Management** > **DNS Server**。 ![](https://i.imgur.com/3SGzn9j.png) 若要清除 DNS 列表,可使用以下命令。 ```bash uemcli -sslPolicy accept -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/dns/config set -noNameServer ``` ## NTP 跟 DNS 設定類似。但有多筆 NTP 服務主機,需要執行多次,用個陣列跟迴圈就可以輕鬆完成了。設定 NTP 服務主機時,系統同時會檢測相關狀態,會花點時間完成。 ```bash ntp1='time1.google.com' ntp2='time2.google.com' ntp3='time3.google.com' ntp=("${ntp1}" "${ntp2}" "${ntp3}") for server in ${ntp[@]}; do uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/ntp/server create -server ${server} done ID = NTP_DefaultId_time1.google.com Operation completed successfully. ID = NTP_DefaultId_time2.google.com Operation completed successfully. ID = NTP_DefaultId_time3.google.com Operation completed successfully. ``` ![](https://i.imgur.com/s35q9W1.png) ![](https://i.imgur.com/1hTtZp9.png) 使用以下命令顯示設定狀態。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/ntp/server show 1: ID = NTP_DefaultId_time1.google.com Server = time1.google.com 2: ID = NTP_DefaultId_time2.google.com Server = time2.google.com 3: ID = NTP_DefaultId_time3.google.com Server = time3.google.com ``` 若要刪除 NTP 服務主機,必須指定 **`id <value>`**。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /net/ntp/server -id NTP_DefaultId_time1.google.com delete Operation completed successfully. ``` :::info 查看目前系統時間及時區。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/time show 1: Time = 2022-10-14 02:41:29 uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/schedtimezone show 1: Name = UTC Legacy ``` ::: ## Proxy 先查看未設定前的狀態。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u admin -p ${admin_new_pass} /sys/support/config show -detail 1: Support proxy server enabled = no Support proxy server address = Support proxy server port = 0 Support proxy user name = Support proxy protocol = socks Automatic support contracts update enabled = yes Cloud management enabled = no ``` 設定方式還是類似的方式,一點困難度都沒有! ```bash proxy_enabled='yes' proxy_addr='163.28.160.110' proxy_port='3128' #proxy_user='user1' #proxy_pass='password123' proxy_protocol='socks' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/support/config set -enableSupportProxy ${proxy_enabled} -supportProxyAddr ${proxy_addr} -supportProxyPort ${proxy_port} -supportProxyProtocol ${proxy_protocol} ``` ![](https://i.imgur.com/abGRJck.png) 如果設定過 Proxy,紀錄似乎無法刪除,若不想使用代理服務,就直接停用就可以了! ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/support/config set -enableSupportProxy no ``` 顯示 Proxy 設定狀態。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u admin -p ${admin_new_pass} /sys/support/config show -detail 1: Support proxy server enabled = no Support proxy server address = 163.28.160.110 Support proxy server port = 3128 Support proxy user name = Support proxy protocol = socks Automatic support contracts update enabled = yes Cloud management enabled = no ``` ## Unisphere 授權 ### 取得 System UUID 申請授權檔需要提供安裝軟體時產生的**系統 UUID**。要取得正確的 **System UUID**,則可透過 **uemcli** 命令完成。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/general show | grep 'System UUID' uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/general show 1: System name = unity01 Model = UnityVSA System UUID = 06CD5086-6A06-480C-8B7F-024ACA5C9A66 License activation key = ************** Product serial number = VIRT2236WBRC0A Health state = OK (5) ``` 在圖形初始化程序時,會直接顯示。或是 **SYSTEM** > **System View** ![](https://i.imgur.com/W46KW9B.png) :::warning **UUID** 可以透過 **`svc_diag`** 命令取得。但這個命令取得的 **UUID** 並不是申請授權所需要的 **System UUID**。 ![](https://i.imgur.com/Fm0aEWN.png) ::: ### 申請授權檔案 :::danger 目前申請 Community 版本的 UnityVSA,無法透過以下網頁方式自助產生授權檔,請**直接向 Dell EMC 原廠開立案例請求**。 ::: 因為是測試用途,採用社群版本(Community Edition)的免費授權,要透過連結進行授權申請。 [https://www.dellemc.com/en-us/auth/elmeval.htm](https://www.dellemc.com/en-us/auth/elmeval.htm) ![](https://i.imgur.com/ttu2CU1.png) ### 套用授權檔案 順利取得授權檔案後,將檔案下載備用。請使用以下命令上傳並套用測試授權。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} -upload -f ${license_file} license --- Uploaded 8.30 KB of 8.30 KB [ 100.0% ] -PROCESSING- Operation completed successfully. ``` ### 檢視授權 使用以下命令可檢視授權套用狀態。 ```bash uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} /sys/lic show 1: ID = ANTIVIRUS Name = Antivirus Server Integration Installed = yes Version = 1 Issued = 2022-09-28 Expires = Never Health state = OK (5) 2: ID = BASE_OE_V4_0 Name = UnityOE Installed = yes Version = 1 Issued = 2022-09-28 Expires = Never Health state = OK (5) 3: ID = CIFS Name = CIFS/SMB Support Installed = yes Version = 1 Issued = 2022-09-28 Expires = Never Health state = OK (5) <中間省略> 17: ID = UNISPHERE_CENTRAL Name = Unisphere Central Installed = yes Version = 1 Issued = 2022-09-28 Expires = Never Health state = OK (5) 18: ID = VASA Name = VMware VASA/VVols Installed = yes Version = 1 Issued = 2022-09-28 Expires = Never Health state = OK (5) ``` 從 Unisphere UI 界面檢視授權。 ![](https://i.imgur.com/Zx5J5An.png) :::warning **UnityVSA 與實體設備功能比較**: ![](https://i.imgur.com/9isRCHC.png) 另外,要搭配 **CloudIQ** 需要 **UnityVSA Professional 版本**支援。 ::: :::info 相關授權取得資訊,可參考知識庫文章: [[Dell EMC Unity: How to get license file for Dell EMC Unity Arrays, (User Correctable)]](https://www.dell.com/support/kbdoc/zh-tw/000022341/dell-emc-unity-how-to-get-license-file-for-dell-emc-unity-arrays-user-correctable) ::: # 後續設置 我想有關使用 **`uemcli`** 進行初始化程序的部份在此先告一段落,UnityVSA 已經完成**授權匯入**及**基礎設定**了。至於以下任務待之後**系統管理**部份再說吧! - 存儲池(磁碟群組)建立 - iSCSI 界面設定 - NAS 服務設定 - 告警通知設定 # 補充 根據以上使用 **`uemcli`** 的簡單經驗,可以將命令及執行程序簡化一下。其實每次執行的命令語法重複性很高。每個命令至少包含三個部份: 1. **目標系統**: Unity 存儲系統 IP 位址、登入使用者及登入密碼。 2. **物件**: 指定的管理對象及存取位置。 3. **操作及相關參數**: 對於指定物件要執行的動作及相關所需參數。 所以撰寫腳本大致只要針對這 3 個部份分別建立及重組就可以輕易完成要執行的任務了。再來就是把常用到的參數,統整在單一的組態檔,透過修改此組態檔內的參數內容,便能不同環境下完成相同的任務。 首先,針對單一目標系統建立一個組態檔,所有相關該存儲系統所需的登入或設定資訊,都可以放在這個組態檔。之後,若有類似的目標系統,只要調整其中項目內容另存他檔便可使用。另一方面也可作為設備紀錄資訊管理之用。 ## 設備組態檔 ### 範例 unity.host ```yaml= unity='10.7.155.85' init_status=yes svc_user='service' svc_pass='service' svc_new_pass='VMware1!VMware1!' admin_user='admin' admin_pass='Password123#' admin_new_pass='VMware1!VMware1!' dns='8.8.8.8,8.8.4.4' #proxy_enabled='no' #proxy_addr='163.28.160.110' #proxy_port='3128' #proxy_user='' #proxy_pass='' #proxy_protocol='socks' ntp1='time1.google.com' ntp2='time2.google.com' ntp3='time3.google.com' license_file='../licenses/unity-vsa.lic' ## Pools pool_id=('pool_1' 'pool_2') pool_name=('vPool_01' 'vPool_02') ## LUNs ### lun_1 lun1_id='sv_1' lun1_name='MyTierLUN' lun1_descr='My First Tier LUN' lun1_type='primary' lun1_size='2G' lun1_thin='no' lun1_spOwner='spa' ## startHighThenAuto(default), auto, highest, lowest lun1_fastvpPolicy='startHighThenAuto' ### lun_2 lun2_id='sv_2' lun2_name='MyLUN' lun2_descr='My LUN' lun2_type='primary' lun2_size='100M' lun2_thin='yes' lun2_spOwner='spa' ## startHighThenAuto(default), auto, highest, lowest lun_fastvpPolicy='highest' ## access_host=('host1' 'host2') ``` :::info 可依實際應用項目增加組態參數。 ::: ## 目標系統連線 可根據不同操作目的撰寫,這裡就先以 **show(顯示)** 為主。 ### 範例 unityShow.sh ```bash= #!/bin/bash configFile='unity.host' if [ ! -f "${configFile}" ]; then echo -e "\n<!> 無法存取 ${configFile} 組態檔" exit fi cmd=${1:-/sys/general} action=${2:-show} source ./${configFile} uemcli -sslPolicy accept -noHeader -d ${unity} -u ${admin_user} -p ${admin_new_pass} "${cmd}" "${action}" ``` :::info - 可依熟悉的程式語言改寫。 ::: **檢視系統基本資訊** - 物件:/sys/general - 動作:show ![](https://i.imgur.com/LE8Wifs.png) **檢視存儲集區資訊** - 物件:/stor/config/pool - 動作:show ![](https://i.imgur.com/RblCmtU.png) 好吧,暫時就到這裡。其他請**自由發揮**。 :::info 可以參考以上資訊,完成一個讀取設備組態檔,自動完成初始化程序 1~6 的腳本檔。 :::