對於希望估算基礎設施即代碼項目(例如 Terraform)的云成本的 DevOps、SRE 和開發人員來說,基礎設施成本非常重要。 借助 Infracost,您可以在比較不同選項的同時快速查看成本明細,這有助於在做出重大決策之前獲得更好的見解。
基礎設施成本如何運作?
Infracost 可以通過掃描您的 Terraform 代碼來檢查超過 3 萬個價格,並在您啟動資源之前生成簡單易讀的成本估算。
您還可以使用 Infracost 來了解哪些代碼行對成本影響最大,因為它將成本映射到拉取請求中的資源。 通過將 Infracost 集成到 CI/CD 中,您可以與您的團隊協作,並就現有工作流程中的更改的影響進行討論。
Infracost 通過其 Cloud Pricing API 後端服務工作,並且使用 CLI 工具,您可以解析 JSON 格式的 Terraform 計劃。 API 交叉引用每個正在使用的雲資源的單獨成本,以及基於雲提供商的相關成本參數。
該程序不需要任何憑據即可運行,並且不會對 Terraform 或分析的雲資源進行任何更改。 通過使用 Terraform 資源類型的計數,API 可確保計算新資源。
Infracost 有兩種主要方式顯示成本明細:
A) 成本的完整細目分類
B) 當前狀態與計劃狀態之間的每月費用差異
基礎設施成本入門(分步)
請按照此分步指南安裝並開始使用 Infracost:
1.安裝基礎設施
開始的第一步是安裝 Infracost,但您必須首先已經安裝 Terraform 安裝。
以下是 Infracost 的不同版本:
macOS 自製程序:
釀造安裝基礎設施成本
infracost –version # 應顯示 v0.9.7
macOS 手冊:
# 根據您的 OS/arch 下載 CLI 並將其放在 /usr/local/bin 中
捲曲-fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | 噓
Linux的:
# 根據您的 OS/arch 下載 CLI 並將其放在 /usr/local/bin 中
捲曲-fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | 噓
泊塢窗:
docker pull 基礎設施成本/基礎設施成本
docker 運行 –rm \
-e INFRACOST_API_KEY=see_following_step_on_how_to_get_this \
-e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID \
-e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY \
-v $PWD/:/code/ infracost/infracost明細 –path /code/
# 為 Infracost 或 Terraform 添加其他必需的標誌/環境
# 例如,如果您使用 AWS 假設角色,則可能需要這些:
# -e AWS_SESSION_TOKEN=$AWS_SESSION_TOKEN \
# -e AWS_REGION=$AWS_REGION \
Windows上:
下載並解壓 最新發布的。 使用命令提示符或 Powershell 運行它 .\infracost.exe --no-color
以及其他必需的命令/標誌(顏色輸出有一個我們需要在 Windows 上修復的錯誤)。 您還應該將 exe 文件移動到您的文件夾中 PATH
環境變量,例如 C:\Windows
.
2. 獲取 API 密鑰
下一步是註冊免費的 API 密鑰,CLI 使用該密鑰來查詢 Cloud Pricing API 以執行獲取實例類型的價格等任務。
所有操作系統:
基礎設施成本登記冊
密鑰保存在 ~/.config/infracost/credentials.yml
.
3. 運行基礎設施成本
現在您已準備好運行 Infracost,它不會對您的 Terraform 狀態或云資源進行任何更改。 您可以使用提供的 Terraform 項目運行它來測試它。
所有操作系統:
git 克隆 https://github.com/infracost/example-terraform.git
cd 示例-terraform/sample1
# 運行 main.tf 並重新運行以比較成本
基礎設施成本細分-路徑。
# 顯示每月費用的差異,編輯 yml 文件並重新運行以比較費用
基礎設施成本差異路徑。 –sync-usage-file –usage-file infracost-usage.yml
4.添加到CI/CD
您現在可以使用 Infracost 的 CI/CD 集成 自動添加拉取請求評論,向您顯示成本估算差異。 這還將為您提供一個安全網,使團隊能夠將變更的成本影響作為其工作流程的一部分進行討論。
用法
infracost
CLI有以下主要命令:
breakdown
:顯示成本的完整細目diff
:顯示當前狀態和計劃狀態之間的每月成本差異
如果您的存儲庫具有多個 Terraform 項目或工作區,請使用 Infracost 配置文件。 他們的結果將被組合成相同的細分或差異輸出。
高級用法
除了常規的使用方法外,Infracost還有各種高級的使用方法可以使用。 這些高級方法也可以通過 Infracost 配置文件使用。
Terraform 計劃文件
Infracost 可以針對 Terraform 計劃文件運行,這意味著您已經運行 Terraform init.
Infracost 只運行 Terraformshow
在這種情況下,這意味著它不需要雲憑據或 --terraform-plan-flags
要設置。
cd 路徑/目標/代碼
地形初始化
terraform 計劃輸出 tfplan.binary
基礎設施成本細分 - 路徑 tfplan.binary
基礎設施差異 – 路徑 tfplan.binary
地形狀態
如果您想查看當前 Terraform 狀態的成本細分,您應該知道 infracost breakdown
命令有一個 --terraform-use-state
標誌,這在這種情況下很有用。 您必須已經運行 Terraform apply
,所以 Infracost 只運行 Terraform show
,不需要雲憑據或 --terraform-plan-flags
要設置。
基礎設施成本細分 – 路徑示例/terraform –terraform-use-state
Terraform 狀態 JSON 文件
你可以運行 infracost breakdown
針對 Terraform 狀態 JSON 文件。 這將是狀態的 [JSON 輸出格式],而不是內部 JSON 表示形式。 它必須通過運行生成 terraform show -json
在 Terraform 項目中,如果您想查看當前 Terraform 狀態的成本細分,它特別有用。 在這種情況下,這意味著您已經運行 Terraform apply
,意味著沒有云憑證或 --terraform-plan-flags
是必要的。
支持哪些雲和資源?
Infracost 支持超過 200 個 Terraform 資源 跨 AWS、Google 和 Azure,而其他 IaC 工具如 普魯米 和 雲信息 都包含在路線圖中。 對新資源的支持不斷增加,因此檢查存儲庫的版本非常重要。
結論
基礎設施成本是有幫助的 開發人員工具、DevOps、SRE 和其他希望快速查看成本細分並預先比較不同選項的人。 如果您希望將其與 CI 集成和/或需要 AWS 和 Google Cloud 支持,那麼它也是一個不錯的選擇。 如果您想在團隊之間建立更好的協作,Infracost 也可以在這方面提供幫助。 所有這些功能使其成為您應該強烈考慮實施的工具,用於 Terraform 的云成本估算。
發表評論