了解如何使用Terraform管理多云?
譯文【51CTO.com快譯】多云戰(zhàn)略可能會給企業(yè)IT團隊帶來很多復(fù)雜性。雖然Puppet、Chef和Ansible等幾款開源端點管理工具有所幫助,但能夠通過單一入口點而不是通過典型的服務(wù)器/客戶端關(guān)系將服務(wù)部署到多個提供者來得尤其重要。
HashiCorp的Terraform是一個開源基礎(chǔ)架構(gòu)即代碼(IaC)工具,可以為管理員建立單一的工作流程,以便跨任何云提供商對基礎(chǔ)架構(gòu)進行可預(yù)測、可重現(xiàn)的更改。除了簡化管理虛擬機和依賴項外,它還簡化了跨多家提供商部署服務(wù)的工作。Terraform是一種IaC工具,它還使團隊能夠共享、重用、部署和回滾基礎(chǔ)架構(gòu)更改,就像它們使用代碼版本一樣。
開始入手
不妨看一下一個基本的Terraform配置文件,它同時配置AWS EC2實例和Google App Engine應(yīng)用程序。
- provider "aws" {
- access_key = "ACCESS_KEY_HERE"
- secret_key = "SECRET_KEY_HERE"
- region = "us-east-1"
- }
- provider "google" {
- credentials = "${file("account.json")}"
- project = "my-project-id"
- region = "us-central1"
- }
- resource "aws_instance" "example" {
- ami = "ami-123456789"
- instance_type = "t2.micro"
- }
- resource "google_project" "my_project" {
- name = "My Project"
- project_id = "your-project-id"
- org_id = "1234567"
- }
- resource "google_app_engine_application" "app" {
- project = "${google_project.my_project.project_id}"
- location_id = "us-central'
- }
上述配置定義了兩個提供者(provider)和三個資源。在Terraform中,提供者是指與某種API交互的服務(wù),本例中是AWS和谷歌云平臺(GCP)。雖然提供者指令最直觀的用途是用來配置一個或多個云平臺,但也有其他許多資源可供使用,比如數(shù)據(jù)庫驅(qū)動程序、網(wǎng)絡(luò)平臺和版本控制系統(tǒng)。
你在定義提供者后,可以為該提供者聲明資源。在上述例子中,有三個已定義的資源:AWS EC2實例、GCP項目和Google App Engine應(yīng)用程序。資源是某個云提供的任何工具或服務(wù),比如存儲、數(shù)據(jù)庫或計算。然而,資源也可以定義本地文件,甚至定義隨機數(shù)據(jù)生成器。
適應(yīng)變化
使用Terraform時要采取一切預(yù)防措施,以避免任何意外的成本。
除了能夠使用定義明確的配置文件配置應(yīng)用程序基礎(chǔ)架構(gòu)外,Terraform還可以適應(yīng)不斷變化的需求。這項獨特功能使管理員能夠?qū)ε渲梦募M行更改,不用成倍增加工作或基礎(chǔ)架構(gòu)。比如說,假設(shè)我們的上述配置文件更改為以下內(nèi)容:
- provider "aws" {
- access_key = "ACCESS_KEY_HERE"
- secret_key = "SECRET_KEY_HERE"
- region = "us-east-1"
- }
- resource "aws_instance" "example" {
- ami = "ami-123456789"
- instance_type = "t2.micro"
- }
添加和刪除資源時,Terraform會識別這些更改并相應(yīng)地更新你的基礎(chǔ)架構(gòu)。由于Terraform保留任何應(yīng)用的配置文件的先前狀態(tài),因此它知道刪除先前配置的GCP資源,又不嘗試重新配置AWS資源。這在更改可能隨時變化的版本控制環(huán)境中尤其有用。
面臨的挑戰(zhàn)
Terraform***的好處之一也帶來了***的風(fēng)險:由于它很容易使用,如果不仔細考慮,用戶可能會面臨巨大成本。只要使用一個命令,用戶就可以將任何配置文件應(yīng)用于已配置的提供者,這可能導(dǎo)致眾多資源部署到任意數(shù)量的云提供者。雖然Terraform通過計劃讀出和確認機制有助于防范這種情況,但事故可能會發(fā)生。使用Terraform時要采取一切預(yù)防措施,以避免任何意外的成本。
此外,Terraform可以適應(yīng)針對任何已配置環(huán)境作出的更改,因為它可以存儲已配置基礎(chǔ)架構(gòu)的狀態(tài)。雖然這為創(chuàng)建、修改和刪除基礎(chǔ)架構(gòu)提供了一種快速的機制,但該工具并不在每次運行時都檢查云資源,這意味著你從多臺計算機更改基礎(chǔ)架構(gòu)時難免增添共享狀態(tài)的開銷。
原文標題:Learn how to use Terraform for multi-cloud management,作者:Zachary Flower
【51CTO譯稿,合作站點轉(zhuǎn)載請注明原文譯者和出處為51CTO.com】