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

回憶一下我們要展示什麼。我們要開始利用Terraform的NSX-T Provider以及vSphere Provider,從一個空空地只有T0 Router與實體網路介接完畢的環境如下圖:

然後最終將三層式虛機環境,包含對應到此應用的T1 Router / Web-AP-DB網段 / 安全群組 / 防火牆規則 / 負載平衡器 / 需求的虛機 / 安全標籤 等都配置出來:

大家如果要進行這樣的測試或展示,先期配置包括了:

 

  • 建立好vCenter / vSphere的虛擬化環境

 

  • 安裝完畢NSX-T。同時,請將T0路由器,以及與外部實體網路間的路由(靜態路由 / BGP等)預先配置好

 

  • 準備好一台執行Terraform的機器。Terraform可以運作在多種作業系統上,我的Lab環境是採用一台Ubuntu 16.04的虛機。這台虛機必須要能夠IP連結到vCenter / NSX-T Manager

 

  • 下載並安裝Terraform。這裡步驟很簡單,大家可以參考下列網頁照著做:https://learn.hashicorp.com/terraform/getting-started/install

 

這理我們並不是提供一個Step-by-Step Guide,甚至不會把 sample code 貼出來。網誌內我們僅說明要達成什麼目的,有採用到Terraform的哪些NSX-T Resource,並展示在NSX-T內的配置結果。Terraform的相關學習資源相當多。若大家對這接下來的內容有興趣,可以透過下列鏈結進行學習:

 

  • Terraform Learning: https://learn.hashicorp.com/terraform/

 

  • NSX-T與Terraform整合的Sample Code與說明網頁:https://blogs.vmware.com/networkvirtualization/2018/04/nsx-t-automation-with-terraform.html/

 

  • 上面網頁對應的Sample Code: https://github.com/yasensim/nsxt-terraform-three-tier-app

 

我們把這個三層式架構的建立我們分解成四個步驟:建立底層網路、建立安全配置、建立負載平衡機制、建立虛機並打安全標籤。那麼第一個步驟:

 

分解步驟一:建立二層及三層網路

 

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

 

  • nsxt_logical_switch:建立三個邏輯交換器 Web Network / AP Network / DB Network。

 

  • nsxt_logical_tier1_router:建立一個Tier 1路由器

 

  • nsxt_logical_router_link_port_on_tier0:在指定的Tier 0路由器上,建立一個router-link port,以便接到Tier 1路由器上

 

  • nsxt_logical_router_link_port_on_tier1:在指定的Tier 1路由器上,建立一個router-link port,並與指定的Tier 0路由器(的router-link port)相接。如此就建立了T0 / T1之間的路由器關聯

 

  • nsxt_logical_port:在指定的邏輯交換器上,建立一個邏輯埠(以供接取到T1 Router上)

 

  • nsxt_logical_router_downlink_port:在指定的路由器上,建立一個邏輯埠,並連接到下行的邏輯交換器,並且指定IP地址。

 

透過上述的模組作業,我們可以建立出像下面的網路架構:建出三個邏輯交換器,建立一個T1路由器並接取到T0路由器,把三個邏輯交換器接到T1路由器上,並且指定對應的IP地址:

 

實際上,當我們把Terraform的TF檔撰寫完畢並且透過terraform apply指令運作時,在NSX-T Manager上面可以看到三個邏輯交換器被建立出來:

 

同時一個新的T1路由器也建立出來,接取了上面的三個邏輯交換器並配置對應的IP,而且接到上層的T0路由器 (NSXT-Demo-T0-AS)。

每一個Provider Resource(請大家把這個想成一個功能模組)的使用方式及參數說明均可以在Terraform網頁找到,比如說要建立一個邏輯交換器的模組nsxt_logical_switch,相關的說明在這邊:https://www.terraform.io/docs/providers/nsxt/r/logical_switch.html。

 

下篇網誌內我們會就後續的三個步驟進行說明。