Terraform


文档摘要

Terraform 目录: 简介 教程资源 参考文献 简介 Terraform 是什么? Terraform 是一个开源工具,允许您使用简单的、声明性的编程语言定义多种提供程序(例如 AWS、Azure、Google Cloud、DigitalOcean、DataDog、VMWare、GitHub 等)的基础设施,并通过几个命令行指令部署和管理这些基础设施。 Terraform Cloud 是一个帮助团队一起使用 Terraform 的应用程序。它在一致且可靠的环境中管理 Terraform 运行,并包括对共享状态和敏感数据的轻松访问、批准基础设施更改的访问控制、用于共享 Terraform 模块的私有注册表、详细策略控制以治理 Terraform 配置的内容等。

Terraform

目录:

简介

  • Terraform 是什么?

    • Terraform 是一个开源工具,允许您使用简单的、声明性的编程语言定义多种提供程序(例如 AWS、Azure、Google Cloud、DigitalOcean、DataDog、VMWare、GitHub 等)的基础设施,并通过几个命令行指令部署和管理这些基础设施。
  • Terraform Cloud 是一个帮助团队一起使用 Terraform 的应用程序。它在一致且可靠的环境中管理 Terraform 运行,并包括对共享状态和敏感数据的轻松访问、批准基础设施更改的访问控制、用于共享 Terraform 模块的私有注册表、详细策略控制以治理 Terraform 配置的内容等。

Terraform Cloud 可作为托管服务在 https://app.terraform.io 上使用。我们为小型团队提供免费账户,并为中型企业提供具有更多功能集的付费计划。

大型企业可以购买 Terraform Enterprise,这是我们托管版本的 Terraform Cloud。它为企业提供了一个私有的 Terraform Cloud 应用实例,没有资源限制,并具有审核日志和 SAML 单点登录等企业级架构功能。

为什么选择 Terraform?

  • Terraform 是一种“编排”工具,而不是“自动化”工具:自动化是指无需人工干预即可完成的任务,而编排意味着将任务分解成工作流程或运行多个自动化任务,称为进程。例如,编排是结合多个自动化任务来创建 IP 地址或创建安全组的一种方式。

  • Terraform 是“声明性”的,而不是“过程性/命令式”的:这两种是对比的编程模式。声明性编程不控制程序的流程,你只需要说明你想要什么,而不说明如何做到这一点。相反,过程性编程则定义整个过程并提供实现步骤。

  • Terraform 遵循客户端仅架构,而不是客户端/服务器架构:Chef、Ansible 都遵循客户端/服务器架构。你在客户端系统上发出命令,它执行你的命令并将系统的状态存储起来。服务器与代理通信,必须在每个你想配置的实例上安装这些代理。这种架构会带来额外的组件,并可能导致新的故障模式。而 Terraform 使用云提供商的 API 来配置您的基础设施。

  • Terraform 支持多提供者:Terraform 提供了在不同云提供商之间切换的便利,如 Google、AWS、OpenStack、Azure。Terraform 允许您编写特定于每个提供者的代码。

  • Terraform 提供不可变基础设施:这意味着一旦你实例化了你的服务器,你就不会更改它。实例会被重新部署,而不是从以前的版本恢复。组件会被替换而不是更新到新版本。这减少了配置漂移的可能性,并提高了正常运行时间。

安装

  • 通过 curl 安装
# download terraform as zip for your architecture (linux here) curl -O https://releases.hashicorp.com/terraform/0.11.10/terraform_0.11.10_linux_amd64.zip # extract the archive and move the binary to /usr/local/bin sudo unzip terraform_0.11.10_linux_amd64.zip -d /usr/local/bin/ # remove archive rm terraform_0.11.10_linux_amd64.zip

第二种方法是通过 tfenv, a Terraform Version Manager

Download the tfenv 二进制文件安装,并将其添加到你的 PATH 中。

git clone https://github.com/tfutils/tfenv.git ~/.tfenv # add ~/.tfenv to PATH for Bash Users (modifies .bashrc) echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> $HOME/.bashrc # add ~/.tfnev to PATH for ZSH Users (modifes .zshrc) echo 'export PATH="$HOME/.tfenv/bin:$PATH"' >> $HOME/.zshrc

然后,你可以安装所需的 Terraform 版本:

# list all available terraform versions tfenv list-remote # install a terraform version tfenv install 0.13.5 # list installed terraform versions tfenv list # use a certain terraform version tfenv use 0.13.5 # uninstall a terraform version tfenv uninstall 0.13.5

使用

Terraform 工作流

Terraform 工作流允许你随着时间的推移创建和修改基础设施,通过依赖于四个简单的步骤:

  1. 范围 - 确认给定项目需要创建哪些资源。
  2. 编写 - 根据已确定的参数,在 Terraform 模板文件中创建配置文件。
  3. 初始化 - 运行 terraform init in the project directory with the configuration files. This will download the correct provider plug-ins for the project.
  4. Plan & Apply - Run terraform plan to verify creation process and then terraform apply to create real resources as well as state file that compares future changes in your configuration files to what actually exists in your deployment environment.

(optionally) delete infrastructure resources

Terraform is also able to delete infrastructures, previously created by Terraform. To delete infrastructure resources, you use the terraform destroy command.

Code Formatting

Terraform provides a built-in code formatter. Execute terraform fmt within a Terraform project folder and all .tf files will be formatted by Terraform itself.

Validating

Use terraform validate 执行基本的一致性和语法验证。

教程资源

参考文献

声明:
本文件灏天文库团队进行了翻译。尽管我们力求准确,但请注意,翻译可能包含错误或不准确之处。原文档以其原始语言为准。我们不对因使用此翻译而产生的任何误解或误译负责。


发布者: 作者: 转发
评论区 (0)
U