Terraform是什么?:? ? ? ??
? ? ? Terraform 是 HashiCorp 公司旗下的 Provision Infrastructure 產(chǎn)品, 是 AWS APN Technology Partner 與 AWS DevOps Competency Partner。Terraform 是一個(gè) IT 基礎(chǔ)架構(gòu)自動(dòng)化編排工具,它的口號(hào)是“Write, Plan, and Create Infrastructure as Code”, 是一個(gè)“基礎(chǔ)設(shè)施即代碼”工具,類(lèi)似于 AWS CloudFormation,允許您創(chuàng)建、更新和版本控制的 AWS 基礎(chǔ)設(shè)施。
Terraform 基于 AWS Go SDK 進(jìn)行構(gòu)建,采用 HashiCorp 配置語(yǔ)言(HCL)對(duì)資源進(jìn)行編排,具體的說(shuō)就是可以用代碼來(lái)管理維護(hù) IT 資源,比如針對(duì) AWS,我們可以用它創(chuàng)建、修改或刪除 S3 Bucket、Lambda,、EC2、Kinesis、VPC 等各種資源。并且在真正運(yùn)行之前可以看到執(zhí)行計(jì)劃(即干運(yùn)行-dryrun)。由于狀態(tài)保存到文件中,因此能夠離線(xiàn)方式查看資源情況(前提是不要在 Terraform 之外對(duì)資源進(jìn)行修改)。Terraform 配置的狀態(tài)除了能夠保存在本地文件中,也可以保存到 Consul, S3 等處。
Terraform 是一個(gè)高度可擴(kuò)展的工具,通過(guò) Provider 來(lái)擴(kuò)展對(duì)新的基礎(chǔ)架構(gòu)的支持,幾乎支持所有的云服務(wù)平臺(tái),AWS 只是 Terraform 內(nèi)建 Providers 中的一種。
優(yōu)勢(shì)
-
將基礎(chǔ)結(jié)構(gòu)部署到多個(gè)云
Terraform適用于多云方案,將類(lèi)似的基礎(chǔ)結(jié)構(gòu)部署到[AWS云、阿里云、騰訊云、華為云等等]、其他云提供商或者本地?cái)?shù)據(jù)中心。開(kāi)發(fā)人員能夠使用相同的工具和相似的配置文件同時(shí)管理不同云提供商的資源。
-
自動(dòng)化管理基礎(chǔ)結(jié)構(gòu)
Terraform能夠創(chuàng)建配置文件的模板,以可重復(fù)、可預(yù)測(cè)的方式定義、預(yù)配和配置ECS資源,減少因人為因素導(dǎo)致的部署和管理錯(cuò)誤。能夠多次部署同一模板,創(chuàng)建相同的開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境。
-
基礎(chǔ)架構(gòu)即代碼(Infrastructure as Code)
可以用代碼來(lái)管理維護(hù)資源。允許保存基礎(chǔ)設(shè)施狀態(tài),從而使您能夠跟蹤對(duì)系統(tǒng)(基礎(chǔ)設(shè)施即代碼)中不同組件所做的更改,并與其他人共享這些配置 。
-
降低開(kāi)發(fā)成本
您通過(guò)按需創(chuàng)建開(kāi)發(fā)和部署環(huán)境來(lái)降低成本。并且,您可以在系統(tǒng)更改之前進(jìn)行評(píng)估?
-
在 Terraform 誕生之前,我們對(duì) AWS 資源的操作主要依賴(lài) Console、AWS CLI、SDK 或 Serverless。AWS CLI 什么都能做,但它是無(wú)狀態(tài)的,必須明確用不同的命令來(lái)創(chuàng)建、修改和刪除。Serverless 不是用來(lái)管理基礎(chǔ)架構(gòu)的,用 Lambda 創(chuàng)建資源是很麻煩的事。AWS 提供的 CloudFormation,雖然功能非常強(qiáng)大,但是大量的 JSON 代碼閱讀困難。
Terrafrom功能和作用:
功能點(diǎn)
- IaC:infrastructure as code,用代碼管理基礎(chǔ)設(shè)施
- 執(zhí)行計(jì)劃:顯示terraform apply時(shí)執(zhí)行的操作
- 資源圖:構(gòu)建所有資源的圖形
- 變更自動(dòng)化:基于執(zhí)行計(jì)劃和資源圖,可以清晰知道要變更的內(nèi)容和順序 總結(jié):terraform用于各類(lèi)基礎(chǔ)設(shè)施資源初始化,支持多種云平臺(tái),支持第三方服務(wù)對(duì)接
作用
- 使用不同provider的API,包裝抽象成Terraform的標(biāo)準(zhǔn)代碼結(jié)構(gòu)
- 用戶(hù)不需要了解每個(gè)云計(jì)算廠商的API細(xì)節(jié),降低了部署難度
Terraform 的主要特點(diǎn)如下:
-
基礎(chǔ)架構(gòu)代碼(Infrastructure as Code)
-
使用 HCL 高級(jí)配置語(yǔ)法描述基礎(chǔ)架構(gòu)。這樣可以讓數(shù)據(jù)中心的藍(lán)圖進(jìn)行版本控制,像其他代碼一樣對(duì)待,基礎(chǔ)設(shè)施可以共享和重用。
-
執(zhí)行計(jì)劃(Execution Plans)
-
Terraform 有一個(gè)“planning”步驟,它生成一個(gè)執(zhí)行計(jì)劃。當(dāng)調(diào)用時(shí),執(zhí)行計(jì)劃顯示所有的操作,能有效避免操作人口山水對(duì)基礎(chǔ)設(shè)施的誤操作。
-
資源圖表(Resource Graph)
-
Terraform 構(gòu)建了所有資源的圖形,并且并行化了任何非依賴(lài)資源的創(chuàng)建和修改。因此,Terraform 盡可能高效地構(gòu)建基礎(chǔ)架構(gòu),操作人員可以深入了解其基礎(chǔ)架構(gòu)中的依賴(lài)關(guān)系。
-
更改自動(dòng)化(Change Automation)
-
復(fù)雜的變更集可以通過(guò)很少的人工交互應(yīng)用到基礎(chǔ)設(shè)施中,使用前面提到的執(zhí)行計(jì)劃和資源圖表, 將清楚的知道 Terraform 發(fā)生的變化及順序, 避免了許多可能的人為錯(cuò)誤。
Terraform架構(gòu):
參考架構(gòu)圖:
簡(jiǎn)單使用流程:
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-671603.html
說(shuō)明
從上圖我們可以看出terraform 的使用
tf 格式的編排文件
定義變量,定義輸出(可選的)
編寫(xiě)主要的任務(wù)(main.tf)
執(zhí)行terraform 的操作(資源生命周期的處理)
init
plan
apply
destry
?Terraform是一個(gè)可以支持多種云環(huán)境,進(jìn)行創(chuàng)建,更改、版本控制的工具。是一個(gè)Infra-As-Code的瑞士軍刀級(jí)的工具。我們將Terraform在AWS上最佳實(shí)踐架構(gòu)方式和與一些其他工具進(jìn)行整合的方法匯總成以下幾篇文章。主要如下:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-671603.html
到了這里,關(guān)于自動(dòng)化編排工具Terraform介紹(一)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!