# 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 檢視系統存儲空間。

新增虛擬磁碟,UnityVSA 會自動加入。

# 初始化連線準備
## 瀏覽器
使用 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
```

:::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://<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**。

若要清除 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.
```


使用以下命令顯示設定狀態。
```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}
```

如果設定過 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**

:::warning
**UUID** 可以透過 **`svc_diag`** 命令取得。但這個命令取得的 **UUID** 並不是申請授權所需要的 **System UUID**。

:::
### 申請授權檔案
:::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)

### 套用授權檔案
順利取得授權檔案後,將檔案下載備用。請使用以下命令上傳並套用測試授權。
```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 界面檢視授權。

:::warning
**UnityVSA 與實體設備功能比較**:

另外,要搭配 **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

**檢視存儲集區資訊**
- 物件:/stor/config/pool
- 動作:show

好吧,暫時就到這裡。其他請**自由發揮**。
:::info
可以參考以上資訊,完成一個讀取設備組態檔,自動完成初始化程序 1~6 的腳本檔。
:::