# 问答 (FAQ)

## 我应该注意并考虑使用哪些工具？

* [**Terragrunt**](https://terragrunt.gruntwork.io/) - 编排工具（Orchestration tool）
* [**tflint**](https://github.com/terraform-linters/tflint) - 代码检查器（Code linter）
* [**tfenv**](https://github.com/tfutils/tfenv) - 版本管理器（Version manager）
* [**Atlantis**](https://www.runatlantis.io/) - 拉取请求自动化（Pull Request automation）
* [**pre-commit-terraform**](https://github.com/antonbabenko/pre-commit-terraform) - 用于预提交框架 [pre-commit framework](https://pre-commit.com/) Terraform 的 git 钩子集合
* [**Infracost**](https://www.infracost.io) - 拉取请求中 Terraform 的云成本估算。 也适用于 Terragrunt、Atlantis 和 pre-commit-terraform。

## 模块[dependency hell](https://en.wikipedia.org/wiki/Dependency_hell)（依赖地狱）解决方案是什么？

应指定资源和基础设施模块的版本。 提供商应该在模块之外配置，但只能在组合中配置。 提供商和 Terraform 的版本也可以被锁定。

没有主要的依赖管理工具，但有一些技巧可以减少依赖地狱的问题。 例如，[Dependabot](https://dependabot.com/) 可用于自动化依赖更新。 Dependabot 创建拉取请求以确保您的依赖关系安全和最新。 Dependabot 支持 Terraform 配置。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://www.terraform-best-practices.com/zh/faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
