作者: Colin Jao 饒康立 – VMware資深技術顧問,主要負責VMware NSX產品線,目前致力於網路虛擬化、分散式安全防護技術與SD-WAN方案的介紹與推廣。

前篇網誌內我們說明了可以利用Terraform的哪些NSX-T Resources來建立二層與三層網路,並且建立了下列的配置。接下來本篇我們要把後續的三個步驟都完成,建立出一個具備網路、安全防護、負載平衡的三層式虛機架構

分解步驟二:建立安全群組以及防火牆規則

 

這個步驟內我們呼叫下列的NSX-T Provider Resource:

 

  • nsxt_ns_group:建立NSX-T內的NSGroup(安全群組)並且定義出對應的動態或靜態群組規則。我們可以分別建立Web / AP / DB三個群組,依據虛機的標籤動態把對應的機器加入群組內。同時,我們可以建立一個此應用的預設群組,把上面的三個群組都加進來

 

  • nsxt_firewall_section:建立一個NSX-T分散式防火牆的Section,並在此Section內建立不同的規則

 

透過上述的模組,我們建立了群組與防火牆規則要求如下圖:

在NSX-T Manager內可以看到我們建出了四個群組。TF-Group-Web內的條件是如果任何虛機上,有標籤是Scope為tf-tier / Tag是web的機器,就要自動加入此群組。TF-Group-AP / TF-Group-DB的配置相同,而TF-Group-Default則設定為把上面三個NSGroup都配置為成員。

然後Terraform在NSX-T內建立了一個獨立的Firewall Section,並且依據我們的配置,在裡面加了五行規則。

分解步驟三:建立負載平衡器

 

然後我們希望在Terraform建立的Tier 1路由器上同時執行Load Balancer功能,提供Web伺服器的負載平衡與健康檢查。因此呼叫了下列的NSX-T Provider Resource:

 

  • nsxt_lb_http_application_profile:在NSX-T內建立一個http的application profile

 

  • nsxt_lb_http_monitor:建立一個http monitor,指定檢查的規則

 

  • nsxt_lb_pool:建立一個Server Pool,而且指定前面的TF-Group-Web的成員就是這個Pool的成員,Monitor規則就是前面建立的http monitor元件

 

  • nsxt_lb_http_virtual_server:建立Virtual Server,指定Pool以及Application Profile,當然還要設定這個Virtual Server的IP / Pool等參數

 

  • nsxt_lb_service:在指定的T1路由器上建立Load Balancer服務,而且把virtual server掛上來。

 

這個配置完成後,當然,我們在NSX-T Manager內就可以看到對應的Load Balancer配置建立完成了,如下圖:

分解步驟四:建立虛機,並在虛機上打NSX-T標籤

 

首先需要強調這個步驟內會用到兩種不同的Provider。建立虛機用的是vSphere Provider,打標籤則是NSX-T Provider。但當然,在配置檔內你可以同時執行不同的Providers。

 

這個步驟內我們呼叫下列的vSphere Provider Resource:

 

  • vsphere_virtual_machine:產出虛機。我們可以指定由哪個template / 現有的虛機複製出新的機器,還有相關大家熟悉的VM參數,像是CPU / Memory / Datastore / IP / DNS等等等。而當然,這些虛機應該要接在我們前面產出的邏輯交換器上

 

而要在虛機上打標籤,我們需要呼叫下列的NSX-T Provider Resource:

 

  • nsxt_vm_tags:在指定的虛機上打一個或多個標籤

 

透過上述的模組,我們把應用需要的虛機產出如下圖,這邊是完整的配置了。

在vCenter內我們可看到五台虛機產出。下圖內,TF-Web-01這台機器包含Hostname / IP Address等配置都完成,而且正常接在前面產出的Web Logical Switch上。

而在NSX-T內,我們同樣可以看到這些虛機的相關資訊。最重要的,大家可以看到對應的安全標籤已經打上了。此時,各個虛機就自動會被加入對應的群組,防火牆規則會生效,同時負載平衡器在Pool成員加入後當然也開始運作。

在這邊我們花了兩篇網誌和大家說明一個三層式架構應用在Terraform內,利用NSX-T / vSphere等模組如何建出。主要目的希望讓大家可以感受到這類的工具可以相當簡單地進行Infrastructure as Code / Infrastructure Orchestration的作業。我個人從完全不懂Terraform,到下載範例檔,然後在Lab內實作出來,大概總共兩個工作天的時間而已。在各位的環境內如果已有建立vSphere / NSX-T的環境,並且希望透過一些自動化編排工具加速 / 優化日常的維運,希望這幾篇網誌以及對應的sample code可以給大家一些協助。