感謝光顧趾痘,簡書停更统倒,遷移至sengmentfault: https://segmentfault.com/a/1190000018145606
Terraform 提供了一個(gè)資源和服務(wù)商的靈活的抽象層蓄氧。該模型允許可以表示從物理硬件南誊,虛擬機(jī)和容器到郵件和DNS提供商的所有信息咒唆。因?yàn)殪`活性硼补,Terraform 可以被用于解決許多不同的問題冒嫡。這意味著許多已存在的工具與Terraform功能重疊拇勃。我們對比了Terraform和大量此類工具,但是需要注意到Terraform與其他系統(tǒng)并不是互斥的孝凌。它可以被用來管理單個(gè)應(yīng)用程序或整個(gè)數(shù)據(jù)中心方咆。
使用左邊的導(dǎo)航來閱讀Terraform與其他特定系統(tǒng)對比。
Terraform與Chef蟀架,Puppet等
配置管理工具在已存在的機(jī)器上安裝和管理軟件瓣赂。Terraform不是一個(gè)配置管理工具,并且它允許現(xiàn)有的工具專注于自己的優(yōu)勢:引導(dǎo)和初始化資源片拍。
使用provisioners煌集,在資源被創(chuàng)建以后,Terraform可以使任意配置管理工具可以被用于配置和初始化資源捌省。Terraform專注于數(shù)據(jù)中心和相關(guān)服務(wù)的更高層次的抽象苫纤,而不犧牲配置管理工具來做他們最擅長事情的能力。它也擁抱這些工具所負(fù)責(zé)的成功編排,使整個(gè)基礎(chǔ)設(shè)施的部署簡單可靠方面。
Terraform與CloudFormation, Heat等
像 CloudFormation, Heat這樣的工具放钦。允許將基礎(chǔ)設(shè)施的細(xì)節(jié)編寫為配置文件。配置文件允許基礎(chǔ)設(shè)施被彈性創(chuàng)建恭金,修改和銷毀操禀。Terraform 受其所解決問題的啟發(fā)。
Terraform同樣使用配置文件配置基礎(chǔ)設(shè)施細(xì)節(jié)横腿,但是它更進(jìn)一步與云平臺無關(guān)并且能夠結(jié)合多provider和多服務(wù)編排颓屑。例如:Terraform可以同時(shí)編排AWS和OpenStack集群,開啟第三方provider像Cloudflare和DNSimple集成CDN和DNS服務(wù)耿焊。這使Terraform可以利用其支持的服務(wù)來表現(xiàn)和管理整個(gè)基礎(chǔ)設(shè)施忧勿,而不是僅僅已存在于單個(gè)provider里的子集。它提供一種統(tǒng)一的語法较锡,而不是需要運(yùn)維為每個(gè)平臺和服務(wù)使用獨(dú)立且不可相互交互的工具月杉。
Terraform通過使用執(zhí)行計(jì)劃的概念將計(jì)劃語法和執(zhí)行階段分開。通過執(zhí)行terraform plan
钩杰,更新當(dāng)前狀態(tài)并查詢配置文件生成新的執(zhí)行計(jì)劃纫塌。該計(jì)劃包含所有將要被執(zhí)行的動作:將被創(chuàng)建,銷毀和變更的資源讲弄。運(yùn)維可以檢查其狀態(tài)以確保其符合預(yù)期措左。使用terraform graph
,該計(jì)劃將被可視化并按順序輸其出依賴關(guān)系避除。一旦計(jì)劃被獲取怎披,執(zhí)行語法會被限制在計(jì)劃中的動作內(nèi)。其他工具將計(jì)劃和執(zhí)行階段結(jié)合在一起瓶摆,這意味著運(yùn)維人員被迫在心里推斷變更帶來的影響凉逛,這在一個(gè)大型基礎(chǔ)架構(gòu)中會很快變得難以追溯。Terraform讓運(yùn)維人員有信心應(yīng)用變更赏壹,因?yàn)樗麄兪虑翱梢源_切知道將會發(fā)生什么鱼炒。
Boto,F(xiàn)ogd等
像Boto, Fog這樣的庫蝌借,被用于原生訪問云提供商和服務(wù)所提供的API昔瞧。一些庫強(qiáng)制專注于特定的云,有些則嘗試打通所有的云并隱藏于以上的不同菩佑。使用客戶端工具僅提供對于API的低級訪問自晰,需要應(yīng)用程序開發(fā)者創(chuàng)建他們自己的工具來構(gòu)建和管理他們的基礎(chǔ)設(shè)施。
Terraform不打算提供對于提供商的低級編程訪問稍坯,而已提供一個(gè)高級語法來描述云資源和服務(wù)如何被創(chuàng)建酬荞,制備和結(jié)合搓劫。Terraform非常靈活,使用一個(gè)基于插件的模型支持providers和provisioners混巧,賦予它支持幾乎所有服務(wù)API的能力枪向。
自定義解決方案
Terraform的設(shè)計(jì)旨在解決這些挑戰(zhàn)。它提供了一個(gè)簡單咧党,統(tǒng)一的語法秘蛔,允許管理幾乎任意資源而不需要學(xué)習(xí)一個(gè)新工具。通過捕獲所有資源傍衡,他們之間的依賴關(guān)系可以被自動解決深员,所以運(yùn)維人員不需要記住和推理。消除構(gòu)建工具的負(fù)擔(dān)使運(yùn)維人員專注于他們的基礎(chǔ)設(shè)施而不是工具蛙埂。
此外倦畅,Terraform是一款開源工具。除了HashiCorp公司绣的,Terraform社區(qū)也在幫助擴(kuò)展它的功能叠赐,修復(fù)bug,完善文檔和使用案例屡江。Terraform幫助解決每個(gè)組織都存在的一個(gè)問題并提供一種適用的標(biāo)準(zhǔn)以避免不同組織間重復(fù)造輪子燎悍。它的開源特性確保它可以長遠(yuǎn)發(fā)展。