DevOps課程-IaC with Terraform 16

Modules in Terraform — Part1(簡介)

ZONGRU Li
Feb 23, 2022

在前面撰寫Terraform Code完成了EC2機台的建置

但是其中程式碼相當繁雜

若是要加複雜的設計架構,可想而知這份Code就會更長更難以閱讀

也無法提供overview

所以延伸出了 — Modules

Modules:

  • 將許多不同的resources包在一起
  • 組織並打包各種設定成目錄方便分類區分邏輯Components
  • 方便重複利用

舉例來說做製作EC2 instance的時候,可能就封裝以下resources成為Module:

  • aws_instance
  • aws_key_pair
  • aws_ami
  • aws_security_group

之類的合成為一個Module,並且可能命名為Webserver_Module

然後這整個Webserver_Module就可以用在不同region

使用上大概如下圖:

就像一般程式的Function一樣,依據傳入的參數得到不同回傳值

最終也會讓程式看起來比較整潔

另外也可舉例將以下resources合併為一個Module

  • aws_vpc
  • aws_subnet
  • aws_internet_gateway
  • aws_route_table

以上這些常常需要再一起設定的項目

因為其實我們也可以自定義Module

也可以用Terraform或是其他公司組件好的現成Module:

現在vpc的Module
現在iam的Module

查找的頁面就在:

比如點進上圖的vpc module

其中特別要注意的是Dependency的部分:

也就如果我有定義引用這個VPCModule並執行init後

裡面將自動包含aws provider

(此時main.tf裡面就不再需要定義aws provider)

我查到可以查看我當初執行init時候引入的provider的版本:

#執行以下指令可以查看到provider的版本:
terraform version

此時再看看其他的Module,如下EKS的:

放大來看:

後面課程將會嘗試:

  • 自建Modules
  • 使用官網上Registry提供的Modules

參考課程reference

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet