在理解使用場景之前,最好先初步瞭解 Terraform 是什麼。由於 Terraform 具有很好的擴展性,服務提供商以及用戶可以對 Terraform 進行進一步的擴展來增強資源操作的能力,因此 Terraform 在衆多領域得到廣泛的應用,在本文章中列舉八個具體的典型使用場景。
-
Heroku 應用配置
Heroku 是一款流行的 Web 應用支撐 PaaS,開發人員用它來進行應用創建,然後關聯其他輔助服務,如數據庫、郵件服務等,其中最好的特性之一是具有對 dynos 或 worker 的數量進行彈性伸縮的能力。然而,實際上大部分的稍複雜的應用需要更多的輔助服務或者外部服務具備快速的彈性伸縮能力。
Terraform 可以用於編輯 Heroku 應用所需要的配置,並且確保所有所需的輔助服務可用,進而還可以配置 DNSimple 來設置CNAME,或者將 Cloudflare 配置成爲應用的CDN等,最重要的是所有這一些 Terraform 無需使用Web 接口即可在30秒內完成。
-
多層架構應用
N層軟件部署架構是應用非常普遍的模式,最爲常用便是由web 服務器和數據庫構成的二層架構,其他層次還可能疊加 API 服務器、緩存服務器、路由等。這種模式之所以較爲常用是因爲層次之間可以相互獨立地進行擴展並支持分佈式。
Terraform 是一個可用於構建和管理這些基礎架構的理想工具。每層可由一組資源的集合來進行描述,並且自動地處理層級之間的依賴關係,如 Terraform 將確保在 Web 服務器啓動之前數據庫服務準備就緒,以及負載均衡可以感知 Web 服務器節點。然後通過 Terraform 修改 count 配置項值每層從而輕鬆實現水平擴展。由於資源的創建和部署都是可以編程的和自動化的,隨着負載進行彈性擴展也是輕而易舉的。
-
自服務集羣
在一定的組織規模,龐大的不斷擴容的基礎架構的管理對於集中式的運維團隊變得越來越具挑戰性。然而用戶通過運維團隊提供的工具進行自助服務更具吸引力。
Terraform通過配置文件可以設置如何構建和水平擴展一個服務,因此用戶可以將Terraform當做一個黑盒工具來管理自己的服務,並且Terraform配置文件也可以在組織內部進行共享。
-
軟件演示
現代軟件越來越依賴網格化和分佈式部署,雖然現有的工具類似Vagrant可以用於演示環境的可視化部署,但是仍然無法比擬真實生產環境基礎架構。
軟件開發者可以提供 Terraform 配置文件在如AWS之類的公有云提供商或者自己的基礎架構中進行創建、部署以及啓動演示程序。並且還允許用戶對某些參數如集羣規模等進行修改。
-
臨時環境
在軟件研發和交付過程中,通常需要構建生產環境以及stagging或者測試環境,而這些環境只是生產環境的小規模部署用於新產品發佈前的測試和驗證。隨着生產環境越來越複雜、規模越來越大,維護最新的stagging環境變得愈發困難。
通過使用 Terraform,生產環境可以通過配置進行編碼,然後與staging,QA或者開發人員進行共享。這些配置可以用於快速部署一套新環境,也很容易將其銷燬。Terraform 可以幫助用戶客戶維護並行的多套環境,以及有效地將其靈活地創建和銷燬。
-
軟件定義網絡
SDN(軟件定義網絡)在數據中心中越來越普及,它爲運維人員以及用戶提供更豐富更便捷的網絡操控手段,同時可以對應用提供更好的支撐。SDN通常由控制層和基礎架構層組成。
Terraform 可以用於設置SDN的配置,通過控制器來實現網絡自動化部署以及變更,並且這些配置可以進行版本控制以及變更自動化。例如,AWS 的 VPC就是較常見的SDN實現,可以通過 Terraform 進行配置。
-
資源調度器
在大型基礎架構中爲應用進行靜態資源的分配挑戰極大。目前很多調度器,如Borg,Mesos,YARN以及Kubernetes等用於解決這類問題,可以用於動態調度Docker容器,Hadoop 和 Spark大數據任務以及其他軟件工具。
Terraform 的應用不侷限於實體的資源提供商如AWS,調度器也可作爲資源的提供者供Terraform進行申請。Terraform可以部署在不同的層次,如調度器所在的節點上,也可以是被調度的網格節點上。
-
多雲部署
跨多雲部署以提升應用的容災能力對於企業來說很具吸引力。在單個區域或者雲服務提供商部署的應用容災能力受限於提供商的可用性水平,然而在多雲之間進行跨雲部署,可以在多雲之間進行數據的備份和數據的恢復。
目前很多基礎架構管理工具只針對特定雲平臺,但是在多雲之間部署能力還是非常有挑戰性的。Terraform 是雲廠商中立的雲基礎架構管理工具,可以通過相同的配置文件來管理多個雲服務提供商,甚至可以解決跨雲依賴問題。這極大地簡化了管理和編排工作,以及大規模的多雲基礎架構的構建和運營工作。