---
# System prepended metadata

title: '[進階] 半自動化部署 Infoblox 測試環境'
tags: [lab, infoblox]

---

[toc]

為了減少測試 Infoblox 佈署及組態環境的時間，參考先前使用 [**VMware OVFTools**](https://developer.vmware.com/web/tool/4.6.2/ovf-tool/) 和 [**Infoblox WAPI**](https://insights.infoblox.com/resources-deployment-guides/infoblox-deployment-infoblox-rest-api) 的經驗，並加上 [**GOVC(vSphere CLI)**](https://github.com/vmware/govmomi/tree/main/govc) 工具，透過撰寫 **BASH 腳本檔**來完成測試環境的**半自動佈署任務**。

# 佈署準備
## 架構資訊
根據 [[Infoblox DNS 安全解決方案測試需求及說明]](https://hackmd.io/@farmer87/infoblox_poc) 內容進行 POC 環境佈署。

## 版本資訊
| 項目 | 版本 |
| --- | --- |
| VMware ESXi | 7.0.3 build-20036589 |
| Infoblox NIOS | nios-9.0.3-50212-ee11d5834df9-2023-11-23-00-01-55-fixed-500G.ova |
| NIOS Grid Master VM | TE-V1516 <font color=blue>[註1]</font><br>- 14 vCPU<br>- 64GB RAM<br>- 500GB 系統空間 |
| NIOS Reporting VM | TR-V5005 <font color=blue>[註1]</font><br>- 8 vCPU<br>- 64GB RAM (測試資源限制調整至 32 GB)<br>- 500 GB 系統空間<br>- 250 GB 報表空間 <font color=blue>[註2]</font> |

:::info
<font color=blue>註1</font>. 以上 Infoblox 虛擬機器(vNIOS) 機種配置可參考自身的硬體資源調整。  
<font color=blue>註2</font>. 報表空間依報表使用量評估，至少 250 GB。
:::

# 佈署流程
由於佈署程序會採用 **OVFTools** 及 **GOVC** 工具，在 OVA 佈署階段會同時完成：
1. 虛擬主機(Infoblox DNS & Reporting)佈署。
2. 配置虛擬主機網路設定。
3. 指派測試用基礎授權-NIOS,GRID,DNS/DHCP,RPZ。
   :::warning
   目前沒有 **Threat Analytics** 及 **Reporting** 授權的引用方式，所以無法直接完成，有點遺憾！
   :::
4. 新增 Infoblox Reporting 虛擬主機的第二顆虛擬磁碟（250GB）。
5. 調整 Infoblox Reporting 虛擬主機的記憶體大小為 32 GB。
   :::warning
   預設安裝為 64 GB，因為測試資源受限，故調整虛擬主機記憶體。
   :::
6. 虛擬主機網路及授權資訊確認 (**透過 SSH 連線使用 NIOS CLI 執行**)。
   - 確認網路配置: **`show network`**。
   - Infoblox DNS 虛擬主機指派 Threat Analytics 授權: **`set temp_license`**。
   - 確認授權配置: **`show license`**, **`show license gridwide`** 和 **`show license all`**。
7. 完成 建立叢集/配置成員/加入叢集 相關任務。
   - Infoblox Reporting 虛擬主機指派 Reporting 授權。
   :::info
   Reporting 授權必須在成員加入叢集後才能進行指派。
   :::
8. 啟用服務
   - 啟用 DNS 服務
   - 建立 RPZ Feeds
   - 啟用 Threat Analytics 服務
   - 建立 Authoritative Zone (從 AD DNS 進行區域傳送)
   - 建立 Forward Zone (區域查詢轉送至指定 DNS 主機)
   :::info
   Authoritative Zone 和 Forward Zone 建立，可視實際測試狀況選項配置。
   :::
9. 配置 Reporting 服務
   :::info
   目前一定要手動介入才能完成的組態項目，沒有 API 相關資訊可以參考。
   :::

**佈署流程圖**
```mermaid
graph LR;
id1([佈署虛擬機器])-->id2([配置網路<br>指派授權<br>調整硬體配置]);
id2([配置網路<br>指派授權<br>調整硬體配置])-->id3(虛擬主機<br>組態確認);
id3(虛擬主機<br>組態確認)-->id4([建立叢集<br>配置成員<br>加入叢集]);
id4([建立叢集<br>配置成員<br>加入叢集])-->id5(啟用基礎服務);
id5(啟用基礎服務)-->id6([配置Reporting服務]);
id6([配置Reporting服務])-->id7[(完成)];
```

# 程式架構
主要分成[佈署環境](#佈署測試環境)及[組態服務](#組態基礎服務)兩大部份。根據簡單的概念撰寫以下相關部署腳本檔及安裝組態檔。

| 腳本檔 | 說明 |
| --- | --- |
| config/grid.conf | 測試環境參數 |
| 00_setup_lab.sh | 測試環境佈署，提供虛擬機器安裝及網路配置 |
| 01_config_lab.sh | 服務組態主程式，與下列執行腳本關聯應用 |
| 11_config_grid.sh | 建立 Grid 架構 |
| 12_enable_dns_service.sh | 啟用 Grid DNS 服務 |
| 13_create_rpz_feed.sh | 建立 Name Server Group<br>建立 RPZ Feeds 紀錄 |
| 14_create_ta_service.sh | 啟用 Threat Analytics 服務 |
| 15_create_transfer_zone.sh | 搭配 AD DNS 的區域傳輸 (Zone Transfer) 建立 Authoritative Zone |
| 16_create_forward_zone.sh | 搭配指定網域查詢建立 Forward Zone |
| 99_clean_lab.sh | 清除佈署測試環境 |
| connect_infoblox.sh | SSH 遠端連線 |
| rpz_feed.csv | Infoblox RPZ Feeds 紀錄檔 |

# 佈署步驟
## 佈署測試環境
直接執行主程式 **`00_setup_lab.sh`**，完成兩台 Infoblox 虛擬主機的安裝、網路配置及硬體調整。

![圖片](https://hackmd.io/_uploads/H1rm_9oYp.png)
![圖片](https://hackmd.io/_uploads/BkqvdcjK6.png)

第一階段佈署測試環境，從 vCenter 檢視工作，從執行程式開始到佈署兩台虛擬機器電源開機，大約花了 **5~6 分鐘**，其中自動化地完成了**虛擬機器佈署**、**網路組態配置**、**硬體資源調整**和**基本授權指派**。
![圖片](https://hackmd.io/_uploads/HkcMLciY6.png)

## 組態基礎服務

接著會繼續執行 **`01_config_lab.sh`**，會根據預設腳本透過 API 方式進行，依序完成相關功能組態。

:::info
在虛擬機器佈署階段，已經完成了**網路設備組態**，才能順利進行以下程序。
:::

- **建立 Grid 叢集**
![圖片](https://hackmd.io/_uploads/HygkF5ota.png)

- **啟用 Grid DNS 服務**
![圖片](https://hackmd.io/_uploads/H10-FciKp.png)

- **指派 Threat Analytics 與 Reporting 授權 <font color=blue>[第一次手動介入處理]</font>**
![圖片](https://hackmd.io/_uploads/HyNMoqsYp.png)
  :::warning
  這裡必須中斷用**手動指派** Threat Analytics 與 Reporting 授權！目前沒有任何 API 使用資訊。:crying_cat_face: 
  :::

執行 **`connect_infoblox.sh`** 採用 SSH 連線登入，使用 NIOS CLI 進行相關設定。
:::info
在虛擬機器佈署階段，已經啟用了 Infoblox **remote_cosole** 功能。
:::

先連線至 Infoblox Reporting 虛擬機器，使用 **`set temp_license`** 指派 Reporting 授權，並使用 **`show license all`** 檢視結果。
![圖片](https://hackmd.io/_uploads/rJ_ec5oYT.png)

使用 **`show disk`** 檢視報表存放空間。
![圖片](https://hackmd.io/_uploads/BkGH55sY6.png)

再來連線 Infoblox DNS 虛擬機器，使用 **`set temp_license`** 指派 Reporting 授權，並使用 **`show license all`** 檢視結果。
![圖片](https://hackmd.io/_uploads/BkWj95sK6.png)
![圖片](https://hackmd.io/_uploads/SJL655iKT.png)

繼續跟著輔助流程進行。

- **匯入 Infoblox RPZ Feed 情資**
![圖片](https://hackmd.io/_uploads/S1LKj9jFa.png)
![圖片](https://hackmd.io/_uploads/SJj3icjYp.png)

- **啟用 Threat Analytics 服務**
![圖片](https://hackmd.io/_uploads/SJ4ynqiK6.png)

- **建立 Authoritative Zone 和 Forward Zone**
![圖片](https://hackmd.io/_uploads/BJ8X25ita.png)

:::warning
基本上自動化服務配置至此已經告一段落！
:::

- **完成 Reporting 組態  <font color=blue>[第二次手動介入處理]</font>**
![圖片](https://hackmd.io/_uploads/BkschqoYp.png)

連線 Grid Manager 管理介面。可以檢視 **DNS 服務**和 **Threat Analytics 服務**已經<font color=green>**綠燈正常運行**</font>。
![圖片](https://hackmd.io/_uploads/SkIQTcsYa.png)

點擊 **Grid** > **Grid Manager** > **Reporting**，再選擇右側工具列 **Edit** 編輯屬性。
![螢幕快照 2024-01-22 15-49-30](https://hackmd.io/_uploads/HJHQlsiF6.png)

重啟服務後確認 **Reporting 服務**運作狀態，也是<font color=green>**綠燈正常運行**</font>。
![圖片](https://hackmd.io/_uploads/S1KMbsst6.png)

對，還沒完！點選 **Reporting** 繼續完成 **App Configuration** 任務。
> 就是覺得重複性的畫面點擊設定很麻煩！如果也可以用 API 完成就好了？！

![圖片](https://hackmd.io/_uploads/rJrHWijF6.png)

設定外部檔案伺服器以提供查詢匯出，由於測試不需要，就任意輸入內容完成即可。
![圖片](https://hackmd.io/_uploads/HJL2-isF6.png)

:::warning
若是後續的警報、報表需要匯出至檔案伺服器時，就要重新配置此選項。

點選 **Reporting** 功能，確認 Apps 選單為 **Infoblox Reporting & Analytics**，再點選上方 **Administration** > **Set up** 後，便可調整檔案服務器選項。

![螢幕快照 2024-03-21 09-34-45](https://hackmd.io/_uploads/BkrlkztRp.png)
:::

:::warning
在 Reporting 功能頁，點選右上方 **Settings** > **Alert actions**，可以設定警報和報表觸發時的作動行為。

<img width=300 src='https://hackmd.io/_uploads/rkePgftA6.png'><br>

其中 **File Transfer Action** 功能就需要設定正確的檔案伺服器，點選右側 **Setup Infoblox Reporting & Analytics** 進行組態。

![螢幕快照 2024-03-21 09-47-53](https://hackmd.io/_uploads/r10UfMK0T.png)

只不過在我的系統上點選設定後會出現 "**我是傳奇**"？！見 :ghost: 了！暫時就用上面提供的方式進行設定吧！

<img width=280 src='https://hackmd.io/_uploads/BJbB7zKRp.png'>
:::

回到 Reporting 頁面，應該會看到以下畫面，報告分析尚未開始所以顯示空白為正常。
![圖片](https://hackmd.io/_uploads/S1phfjsFp.png)

設定終了，完成任務！ :tada:

:::success
- 經過粗略的紀錄，採用此種方式可以**在 30-40 分鐘完成 Infoblox 基本架構的安裝及服務組態**。
- 透過相同的程序，也可應用在 **POC 配置**，若客戶環境允許也可**輕鬆佈署 Infoblox 解決方案**。
- 如果有 Threat Analytics 和 Reporting 授權指派和 Reporting 初始化設定的 API 資訊，相信更能減少整體佈署的完成時間。
:::

# 參考
- [Infoblox REST API NIOS 8.6 (PDF)](https://insights.infoblox.com/resources-deployment-guides/infoblox-deployment-infoblox-rest-api)
- [Infoblox WAPI documentation (https://<Infoblox_IP_Address>/wapidoc/)](https://127.0.0.1/wapidoc)