terrform現在還不算是特别的成熟,後期發展起來肯定是非常強大的,terrform可以管理任何的基礎設施,其次可以對基礎設施的版本化進行管理,比如寫代碼将代碼存放在版本系統裡面,就是為了友善復原。
同樣可以将基礎設施作為代碼托管到版本系統裡面,然後進行跟蹤。
我們僅僅需要聲明我們所需要的資源,無需考慮底層邏輯,它會自動的幫我們去實作。
比如搭建web叢集,都會有域名,域名綁定的是IP,肯定要将ECS建立起來之後才會有IP,這個時候才會建立域名的DNS解析記錄,這裡面邏輯就不需要你去關心了,tf會會自動幫你生成。
多雲混合雲的部署。
tf提供了工具,就是指令行,指令行有工作流,通過工作流來管理它所支援的雲服務。
對于我們來說,重點就是編寫聲明式的配置檔案,它有一套自己的文法。寫好配置檔案之後由tf去調用雲供應商的api接口來實作我們所定義的資源。
了解k8s的知道,我們會去寫一些yml類型的檔案,寫完yml之後,使用了kubectl這個工具去建立,其實這個工具調用的就是k8s的api,最後将我們的資源建立出來,它可能是個pod。
tf也是一樣,隻不過用它的格式來寫配置檔案,然後由tf去建立,tf其實調用的也是其api,最終生成資源,這可能是vm。
tf工作流:首先是去寫配置檔案,然後去列一個計劃,然後去看部署計劃,先來進行review,最終應用到生産環境當中,去釋出。
tf根據我們的配置檔案去操作provider,去操作每個雲的插件,每個雲的供應商都會提供對應的插件,比如aws可能就提供了aws插件,這個插件最後操作的就是雲的api。
是以tf是通過其api來在雲平台上面建立和管理資源。
provider就是一個可插拔的插件,隻要你有provider,tf都可以通過provider裡面所定義的api來通路建立這些服務。
tf核心工作流程,writer階段,就是我們去寫,去定義我們所需要的資源,這一塊其實就是讓我們去修改配置檔案,寫配置檔案就是我們需要什麼資源。
當你寫好配置檔案,執行terrform plan這個指令的時候,這裡會列出來,根據你的配置檔案,建立以及其他更新的東西。
假設目前運作了ecs,然後配置檔案裡面又加入了ecs,那麼它拿目前一台ecs和你配置檔案裡面定義的兩台ecs去做對比,然後在計劃裡面就可以看出多的那一台,然後做增量的部署。
這些邏輯都是tf内置的,幫我們去實作了。
這個步驟挺重要的,寫完配置檔案最好都在這裡看一下,做哪些變更。這個就類似于代碼review一樣。
确定計劃沒有問題了,這個時候就可以去釋出了。
當你執行apply去釋出的時候,會讓你輸入y,是否要執行。那麼tf就會按照之前的計劃去執行了,子啊各個雲供應商去建立資源。
順序,依賴關系是tf自動幫你處理的,不需要關心它,隻需要寫你需要哪些資源,後面都是它來幫你去做的。例如先建立vpc,再建立虛拟機。
總結
基礎設施發生了變化,因為企業都在上雲,都在使用雲計算,可能是自建的雲計算,有可能是雲供應商提供的這些服務,上雲之後解決了成本,維護問題。
雲定義了網絡,伺服器,存儲等等這些資源,雲的好處就是按需使用,根據業務的需求來動态的調整業務。
上了雲之後,都是通過雲供應商提供的控制台來操作的,來操作我們所有的資源,但是遇到了新的問題就是控制台雖然友善,當你建立很多套環境,對環境做了哪些變更,那麼就要依賴控制台,不能形成操作曆史的記錄,或者說是複用。