背景
1. 什麼是Terraform
Terraform是一種開源工具,用於安全高效地預覽,配置和管理雲基礎架構和資源。Terraform的命令行接口(CLI)提供一種簡單機制,用於將配置文件部署到阿里雲或其他任意支持的雲上,並對其進行版本控制。
阿里雲作為國內第一家與 Terraform 集成的雲廠商,terraform-provider-alicloud目前已經提供了超過 163 個 Resource 和 113 個 Data Source,覆蓋計算,存儲,網絡,負載均衡,CDN,容器服務,中間件,訪問控制,數據庫等超過35款產品,已經滿足了大量大客戶的自動化上雲需求。
2. Terraform的優勢
- 將基礎結構部署到多個雲
Terraform適用於多雲方案,將類似的基礎結構部署到阿里雲、其他雲提供商或者本地數據中心。開發人員能夠使用相同的工具和相似的配置文件同時管理不同雲提供商的資源。
- 自動化管理基礎結構
Terraform能夠創建配置文件的模板,以可重複、可預測的方式定義、預配和配置ECS資源,減少因人為因素導致的部署和管理錯誤。能夠多次部署同一模板,創建相同的開發、測試和生產環境。
- 基礎架構即代碼(Infrastructure as Code)
可以用代碼來管理維護資源。允許保存基礎設施狀態,從而使您能夠跟蹤對系統(基礎設施即代碼)中不同組件所做的更改,並與其他人共享這些配置 。
- 降低開發成本
您通過按需創建開發和部署環境來降低成本。並且,您可以在系統更改之前進行評估。
安裝和配置Terraform
使用Terraform配置日誌審計
操作步驟
一、配置身份信息以及日誌審計服務的中心化區域
在環境變量中配置用戶身份信息以及日誌審計服務的中心Project所在區域
export ALICLOUD_ACCESS_KEY="LTAIUrZCw3********" export ALICLOUD_SECRET_KEY="zfwwWAMWIAiooj14GQ2*************" export ALICLOUD_REGION="cn-huhehaote"
二、操作RAM授權
使用Terraform調用RAM接口完成RAM授權,接口詳情請參見alicloud_ram_policy。在調用RAM接口時,需配置審計相關權限(策略內容、角色名稱等),詳情請參見手動授權日誌採集與同步。
三、配置日誌採集
- 創建一個terraform工作目錄(文件夾),並在該目錄下創建一個名為terraform.tf的文件,文件內容為
resource "alicloud_log_audit" "example" { display_name = "tf-audit-test" aliuid = "12345678" }
上述文件內容中,"example"以及"tf-audit-test"用戶可自定義,aliuid填寫用戶自己的阿里雲主賬號ID。
- 在上一步創建的工作目錄下執行terraform init來初始化terraform工作目錄
執行完畢後,提示“Terraform has been successfully initialized!”代表初始化成功
- 編輯terraform.tf文件,填寫日誌審計服務的相關參數,以此配置日誌採集。配置樣例如下
resource "alicloud_log_audit" "example" { display_name = "tf-audit-test" aliuid = "12345678" variable_map = { "actiontrail_enabled" = "true", "actiontrail_ttl" = "180" } }
上述配置表示開啟操作審計(Actiontrail)日誌的採集,存儲時長(ttl)為180天。
用戶還可以配置多賬號採集,其配置樣例如下
resource "alicloud_log_audit" "example" { display_name = "tf-audit-test" aliuid = "12345678" variable_map = { "actiontrail_enabled" = "true", "actiontrail_ttl" = "180" } multi_account = ["123456789123", "12345678912300123"] }
其中multi_account的值是要採集的多賬號的阿里雲主賬號ID列表。
terraform中日誌審計採集配置的完整參數列表參考:Terraform-Aliyun Log Audit
- 執行terraform apply,使terraform.tf中的採集配置生效
輸入yes確認應用配置,如果提示Apply complete則表示採集配置應用成功,日誌審計服務會按照配置進行日誌採集和存儲。
四、其他常用操作
- 導入已有審計配置
terraform命令:terraform import alicloud_log_audit.example tf-audit-test
其中example和tf-audit-test用戶可自定義修改
執行完畢後,查看terraform工作目錄下terraform.tfstate文件內容,即是導入的配置。
注意:
- 如果想要將terraform import導入的配置遷移到terraform.tf配置文件中,需要手動拷貝過去,並對格式作適當調整,滿足配置文件的格式要求。
- 如果當前terraform工作目錄已經執行過terrraform apply或者terraform import,此時執行terraform import會失敗,需要將當前目錄下的terraform.tfstate文件刪除後再重新導入。
- 查看當前審計配置
terraform命令:terraform show
- 查看當前terraform工作目錄下的terraform.tf配置文件與已生效(apply)的配置的差異(資源預覽)
terraform命令:terraform plan