雲原生學習筆記1:Iac以及Terraform


1 功能:

  • IaC:infrastructure as code,用代碼管理基礎設施
  • 執行計划:顯示terraform apply時執行的操作
  • 資源圖:構建所有資源的圖形
  • 變更自動化:基於執行計划和資源圖,可以清晰知道要變更的內容和順序

總結:terraform用於各類基礎設施資源初始化,支持多種雲平台,支持第三方服務對接

2 使用場景

構建多層應用

  • 支持常見的兩層應用:webserver tier/ db tier;
  • 非常方便擴展其它分層,例如caching tier/ api server tier等
  • 自動管理每個分層之間的依賴關系

自助服務集群

  • 由工具團隊基於terraform開發基礎設施管理工具
  • 業務部門通過黑盒使用這些工具,管理自己的基礎設施

一次性環境

  • 通過terraform的配置,能夠快速搭建一個生產環境的鏡像出來
  • 可以用於維護stagging環境或者快速搭建測試環境

SDN

  • 通過terraform管理虛擬網絡,例如aws 的vpc等

資源調度

  • terraform可以通過對接各種公有雲的基礎設施接口管理基礎設施
  • terraform還可以跟mesos/yarn/k8s等系統集成,通過terraform調度這些系統里面的資源

多雲管理

  • 公有雲提供的工具一般只能支持自己的公有雲平台
  • terraform跟公有雲無綁定關系,可以通過terraform管理多種公有雲資源,例如aws/azure/阿里等

3 競品對比

  • terraform提供關於資源和提供商的彈性抽象
  • 模型支持包括物理硬件、虛擬機、容器、dns等資源
  • 可以管理單個應用程序到整個數據中心

chef / puppet

  • chef/puppet:配置管理工具,一般部署在已經存在的服務器上,進行配置管理工作
  • terraform:專注於基礎設施的初始化工作,基礎設施(例如服務器)初始化完成后,terraform支持集成任意的配置管理工具

cloudformation / heat

  • cloudformation:aws提供的IaC工具,基於配置文件,可以快速管理aws資源(創建/更新/銷毀等),資源包括虛擬機,auto-scaling策略,load-balance等等
  • heat:和cloudformation類似,時openstack中用於創建基礎設施的工具
  • terraform:與雲服務商無綁定關系,可以同時管理多個雲服務商,例如aws/azure/ipenstack,同時可以引入第三方服務,例如第三方的dns管理服務
  • terraform將計划和執行分開,可以通過terraform plan和graph查看執行的計划和資源圖,明確知道即將進行的操作

boto / fog

  • boto/fog:api封裝不同雲平台的一些操作,例如創建一個虛擬機等,同時還有一些工具用於適配不同的雲平台的差異,致力於提供統一的api接口
  • terraform:希望用戶在使用時會知道里面的細節,例如資源是如何被創建、組合、使用等等,而不是提供傻瓜式的api

客戶定制解決方案

  • 定制解決方案:針對客戶場景開發而成,擴展性/維護性較差,新功能引入時需要進行開發,代價較大,如果要覆蓋不同的場景(例如不同的基礎設施),工具開發成本較大
  • terraform:開源、使用簡單、擴展性很強,標准統一,無需自己開發和維護

4 案例

4.1 aws 兩層結構

  • terraform-providers:中集成了當前幾乎所有公有雲的iac工具實現
  • terraform aws 工具集:封裝了aws的iac工具實現,例如申請ec2,創建vpc等等
  • 編寫配置文件:內容為按照手工操作流程,逐個調用aws工具集的工具實現
  • terraform init/plan/graph/apply執行即可


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM