对于希望为 Terraform 等基础设施即代码项目估算云成本的 DevOps、SRE 和开发人员而言,Infracost 非常重要。 借助 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
curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | 嘘
Linux的:
# 根据你的 OS/arch 下载 CLI 并放在 /usr/local/bin
curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh | 嘘
泊坞窗:
码头工人拉基础设施/基础设施
码头运行 -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 Key
下一步是注册一个免费的 API 密钥,CLI 使用它来查询云定价 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 工具如 普鲁米 和 云形成 包含在路线图中。 不断添加对新资源的支持,因此检查 repo 的版本很重要。
结论
基础设施是有帮助的 开发者工具、DevOps、SRE 和其他希望快速查看成本明细并预先比较不同选项的人。 如果您希望将其与 CI 集成和/或需要对 AWS 和 Google Cloud 的支持,这也是一个不错的选择。 如果您想在团队之间建立更好的协作,Infracost 也可以在这方面提供帮助。 所有这些功能使其成为您应该强烈考虑实施的工具,用于 Terraform 的云成本估算。
发表评论