如何在 Ubuntu 上使用 Terraform 命令行界面 (CLI)
在此页
- 先决条件
- 克隆主要代码
- 使用 Terraform 命令行界面 (CLI) 构建您的第一个基础架构
- 结论
Terraform 是一个用于构建和配置基础架构即代码的框架,具有命令行界面和 DSL 语言。 Terraform 可以管理现有和流行的服务提供商以及定制的内部解决方案,以构建和配置完整的分布式数据中心。
Terraform 命令行界面 (CLI) 让您无需编写任何代码或配置文件即可使用 Terraform。这是在编写代码、在您的机器上本地部署配置或将其推入生产之前与您的团队一起对基础设施变更进行原型设计的理想方式。 CLI 基于第三方为此目的创建的 terraformspec 文件格式构建,例如 HashiCorp Nomad CLI Toolkit。
CLI 工具包实施 JavaScript DSL 来定义基础设施,并在 Terraform 和 CLI 中使用相同的配置格式。 CLI 工具包还提供了生成基础设施模板、将基础设施组件组合成完整解决方案以及管理变更的命令。整个 Terraform 工作流程由无状态函数驱动,这些函数在代码中定义并在您每次进行更改时由 Terraform 执行。这使您可以将您的基础设施视为一个单一的设计,可以在运行时轻松修改,而无需重新加载您的配置或修改您的代码库。
许多 IT 专业人员和公司使用 Terraform 命令行界面来管理甚至创建新的基础设施或新的云基础设施。 Terraform 命令行界面可以提供更强大的方法来自动执行手动执行需要很长时间的更改。它是管理基础架构的强大工具。
很容易看出为什么 Terraform 是世界上最受欢迎的开源云供应解决方案之一。它是像你这样的 Linux 人使用的工具!
在里面,您将找到最常用的 Terraform CLI 命令的完整解释和示例,这些命令经过特别选择,可让您亲身体验 Terraform 最强大的功能。
先决条件
- 为了继续阅读本文,您应该:
- 对 Terraform 的特性和功能具有一定的基础知识。
- Linux 机器。该演示使用 Ubuntu 20.04 LTS,但任何 Linux 发行版都可以。
- 机器上安装了 Terraform 和 docker。
克隆主代码
现在您已经满足了先决条件,您可以开始克隆主要代码以在其上使用 Terraform CLI。
1. 运行下面的 apt install 命令在您的系统上安装 git。 Git 是一个开源的分布式版本控制系统,旨在快速高效地处理从小型项目到大型项目的所有内容。您将使用 git 从 github.com 克隆 terraform 命令行界面项目模板。然后您将检查此演示的正确版本的 terraform 命令行。
sudo apt install git -y

2. 运行下面的 git clone 命令将 terraform 命令行项目模板克隆到当前目录。
git clone https://github.com/howtoforge-com/terraform-cli.git

3. 进入新克隆的 terraform-cli 目录并使用您喜欢的文本编辑器(vim、emacs、nano 等)打开 main.tf 文件。 main.tf 文件是您的项目进入 terraform 命令行界面 (Cli) 的入口点。当您运行 terraform 命令时,它使用 main.tf 文件作为输入,以获取有关如何构建基础架构的说明。
cd terraform-cli && sudo nano main.tf
您将获得以下输出。

- main.tf 文件的 terraform { } 部分只是将 docker 提供程序设置为 required_provider。为了让 Terraform 管理您的 Docker 基础设施,您必须配置 docker 提供程序。

- 资源 \docker_image\ \nginx\ { 代码块通过创建一个名为 docker_image 的新资源来演示如何使用 terraform CLI。下一行使用 docker-image 创建一个名为 nginx 的资源。您可以推断这将用于管理您的 Docker 容器。下一行将 docker 镜像的名称设置为 nginx:latest。 keep_locally=false 防止图像在您的机器上本地缓存,这是防止重复下载的好主意。

- 资源 \docker_container\ \nginx\ { 通过创建一个名为 docker_container 的新资源来演示如何使用 terraform CLI。下一行使用 docker_container 创建一个名为 nginx 的资源。这将用于管理您的 Docker 容器端口映射。下一行将 docker 容器的名称设置为 tutorial,最后演示如何使用 ports 块将主机上的端口 8000 和端口 80 映射到 docker 容器上。

使用 Terraform 命令行界面 (CLI) 构建您的第一个基础架构
现在您已经克隆了 Terraform 项目模板,您可以构建您的第一个基础设施。您将使用 Terraform CLI 通过您的项目 main.tf 文件构建基础设施。您将创建一个 docker 容器并将一个端口从您的主机映射到 docker 容器。
1. 首先,运行 terraform init 命令来初始化您的工作目录。 terraform init 命令初始化您的工作目录并下载 Terraform 管理您的基础设施所需的任何插件。工作目录是您将在其中使用 terraform 命令管理基础结构的目录。初始化后,该目录包含一个 main.tf 文件,并且可以包含多个支持文件。
terraform init
成功运行 terraform init 命令后,您将收到以下输出。

2. 接下来,运行 terraform fmt 命令自动格式化您的 main.tf 文件以提高可读性和一致性。 terraform fmt 命令将重新格式化您的 main.tf 文件以提高可读性和一致性。这是一个值得遵循的好习惯,因为它会让您和其他人更容易阅读您的文件。
terraform fmt
如果 terraform fmt 命令修改了您的 main.tf 文件,它将打印出它重新格式化的文件的名称。在这个演示中,输出是空白的,因为 main.tf 文件已经按照 Terraforms 的喜好进行了格式化,如下所示。

3. 运行 terraform validate 命令以确保您的基础设施将按预期构建。 terraform validate 命令是一种安全检查,用于验证您的基础设施是否可以按预期构建。
terraform validate
如果没有错误,您将收到类似于以下内容的输出,表明一切已准备就绪,可以构建您的第一个基础设施。

4. 运行 terraform plan 命令以查看 Terraform 将如何构建基础设施。 terraform plan 命令是 Terraform 计划构建内容的预览,与 terraform apply 不同。
terraform plan
terraform plan 命令输出以下结构,表明它将创建一个名为 nginx 的 docker_container 资源实例和一个名为 tutorial 的 docker_image 资源实例。

5. 运行 terraform apply 命令以应用您使用 terraform plan 预览的更改。 terraform apply 命令将构建您的基础架构。 terraform apply 命令将创建 Terraform main.tf 配置文件中描述的所有资源。
此命令将重用来自 terraform plan 命令的变量、约束和映射的评估,以生成最有效的计划。在运行 apply 命令时,将使用在命令行上使用 terraform apply 指定的任何其他选项。输入 yes 并在要求输入值时按 Enter。
terraform apply

一旦 terraform apply 命令成功,您将看到一条消息,表明您的基础设施已成功构建,如下所示。发生这种情况时,意味着您的基础架构已按预期构建,并且与您的配置文件保持同步。

6. 运行 ls 命令以列出工作目录中的所有文件。您将看到一个名为 terraform.tfstate 的新文件,如下所示。创建一个具有此名称的文件来跟踪对您的基础结构的更改。 terraform plan 命令将运行 terraform apply 时将应用的更改存储在名为 .tfstate 的中间文件中。状态文件包含 Terraform 看到的基础设施的完整状态。此文件是应用任何配置所必需的,并且在进行更改时必须传输,即使目标位于同一提供程序中也是如此。
ls

7. 构建过程到此结束。运行 terraform destroy 命令以销毁您刚刚构建的基础设施。输入 yes 并在要求输入值时按 Enter。 terraform destroy 命令将删除此演示创建的所有资源。 terraform destroy 命令将删除 Terraform main.tf 配置文件中描述的所有资源。一旦资源被破坏,就无法恢复。
您应该删除未使用的资源以保持环境的配置处于检查状态。它不是要掩盖失败——而是要通过防止废弃资源的积累来防止失败。
terraform destroy

结论
在本教程中,您学习了如何使用示例中演示的最常见的 Terraform 概念来构建您的第一个基础设施。您学习了如何使用 Terraform CLI 通过您的项目 main.tf 文件构建基础设施。 CLI 可用于规划、应用和销毁您的基础架构。
您现在拥有构建自己的基础架构的工具。借助 Terraforms 全面且富有表现力的配置语言,您可以轻松管理各种资源。
您可以利用您在基础设施管理方面的新知识,这些知识已经用于 Docker 容器、Kubernetes 和 OpenStack,为您的基础设施即代码实践带来更高的效率和一致性。