Terraform
名词 · 基础设施即代码
HashiCorp 开发的开源基础设施即代码(IaC)工具,通过 HCL 语言的声明式配置文件来定义、配置和管理云基础设施资源——确保可复现性和版本控制。
多云 DevOps 平台,将数百个供应商(AWS、Google Cloud、Azure、Docker、Kubernetes)的 API 抽象为统一的工作流:编写、规划、应用——将基础设施转变为可审计、可测试和可协作的代码。
基础设施自动化的行业标准,管理资源间的依赖关系图,通过 `terraform plan` 计算所需变更并以幂等方式应用——消除配置漂移和人为错误。
Terraform 分三个步骤工作:Write(用 HCL 编写描述所需资源的配置)、Plan(计算达到期望状态所需的变更)和 Apply(自动配置资源)。Terraform 维护一个状态文件(state),将实际资源与声明的配置进行映射。我们的团队使用这个工作流来可靠且可复现地管理客户的整个云基础设施。
Terraform 允许像管理源代码一样对基础设施进行版本控制、一键复制相同的环境并消除手动配置错误。它提供卓越的多云可移植性,通过 GitOps 工作流促进团队协作。我们的团队优先使用 Terraform 来自动化客户的服务器、MongoDB 数据库和 Kubernetes 集群的配置,从而缩短上线时间并降低人为风险。
Terraform 可以从 HashiCorp 官方网站下载二进制文件安装,或通过包管理器安装(macOS 使用 Homebrew,Linux 使用 apt/yum,Windows 使用 Chocolatey)。安装后,`terraform init` 命令通过下载所需的 provider 来初始化项目。我们的团队将 Terraform 集成到开发 Docker 镜像中,确保团队每个成员都拥有相同且即用的环境。
Terraform Provider 是一个插件,使 Terraform 能够与特定的云服务或基础设施 API(AWS、GCP、Azure、Docker、Kubernetes、Cloudflare)通信。每个 Provider 暴露一组可以在配置文件中声明的资源和数据源。我们的团队主要使用 AWS、Docker 和 Kubernetes Provider 来自动化 Web 项目的整个基础设施链。
使用 Terraform,需要创建一个 `.tf` 文件,用 HCL 声明 Provider 和所需资源,然后执行 `terraform init` 初始化、`terraform plan` 预览变更和 `terraform apply` 应用变更。变更在状态文件中被跟踪,可以通过远程后端(S3、Terraform Cloud)共享。我们帮助客户采用 Terraform,构建模块结构并建立自动化 CI/CD 流水线。
Terraform 是一种基础设施即代码(IaC)工具,允许在版本化的配置文件中定义所有基础设施资源(服务器、网络、数据库、DNS),然后通过云供应商的 API 自动配置它们。它相当于数字基础设施的建筑蓝图。我们的团队将 Terraform 视为确保每个项目基础设施可复现性和可追溯性的必备工具。
Docker 镜像是一个不可变的模板,包含运行容器所需的代码、依赖和配置。在 Terraform 的语境中,Docker Provider 允许以声明式和自动化的方式管理镜像的生命周期(构建、拉取、推送)。我们的团队结合 Terraform 和 Docker,不仅对应用代码进行版本控制,还对支撑它的基础设施进行版本控制,确保端到端一致的部署。
可以,Terraform 有官方的 Docker Provider,允许以声明式方式管理 Docker 容器、镜像、网络和卷。这意味着您可以在 `.tf` 文件中定义整个 Docker 基础设施并像代码一样进行版本控制。我们的团队利用这种集成来自动化配置完整的 Docker 开发和生产环境,实现变更的完全可追溯性。
Terraform 和 Docker 在不同层面运作:Docker 容器化应用(打包和运行),而 Terraform 配置这些容器运行的基础设施(服务器、网络、集群)。Terraform 可以通过其专用 Provider 创建和管理容器来驱动 Docker。在 Async Code,我们协同使用两者:Terraform 配置云基础设施和 Kubernetes 集群,Docker 打包 Kubernetes 编排的应用。
Terraform 是 HashiCorp 创建的开源工具,通过将基础设施转化为代码来革新基础设施管理。您不再通过 Web 控制台手动配置服务器,而是在版本化的文本文件中描述基础设施,Terraform 负责自动创建、修改或删除一切。我们的团队依靠 Terraform 为客户提供可靠、文档化且可演进的云基础设施,消除人为错误风险。