在基础设施即代码(IaC)领域,过去几年中涌现出的最有用的工具之一是HashiCorp的Terraform Windows。版本控制基础设施、自动化资源的供应以及在不同云供应商之间执行的能力对于任何DevOps和自动化工作流程都是巨大的。
Terraform的一个用例是在CI/CD中。 Terraform允许您:
我的最新视频
- 创建一个测试环境
- 部署应用程序
- 运行集成测试
- 销毁测试环境
所有步骤都是自动执行的。而且不需要数据中心!
先决条件
本文是关于如何启动和运行Terraform Windows的详细步骤。如果您想跟着操作,请确保已经满足以下先决条件。
- A Windows 10 device
- 一个AWS账户
- 已在该设备上安装并配置了AWS CLI。您可以在这里了解如何安装它,以及在这里了解如何配置它。
- (可选)安装了具有Terraform扩展的Visual Studio Code
安装Terraform Windows应用程序
为了充分利用Terraform的功能,您首先必须在您选择的操作系统上安装它。在本文中,我将重点放在Windows上。但请注意,Terraform也可以在其他操作系统上运行。如果您不在Windows上,请查看安装文档。
艰难的方式
如果您无法使用软件包管理器,或者您想了解安装过程的工作原理,您可以手动安装Terraform。您可以通过下载二进制文件并将其添加到系统路径环境变量来安装Terraform。如果这看起来很复杂,我向您保证,在下一节您将学会更简便的方法。
- 从HashiCorp的下载页面下载适用于您的Terraform版本。在我的情况下,这是Windows 64位版本。
- 在C:\驱动器上创建一个文件夹,您可以在其中放置Terraform可执行文件。我喜欢将安装程序放在一个子文件夹中(例如C:\tools),您也可以在其中放置二进制文件。
- 下载完成后,在文件资源管理器中找到它。将zip文件解压缩到您在第2步中创建的文件夹中。
- 打开开始菜单,键入“environment”,第一项应该是编辑系统环境变量选项。点击进入,您应该会看到这个窗口。

5. 单击底部的环境变量…,您会看到这个:

6. 在底部的部分,其中显示系统变量,找到一个名为Path的变量并单击编辑。然后您将看到一个列表,其中列出了 Windows 可能出于任何原因需要的二进制文件的位置。
7. 单击新建,并将terraform.exe所在的文件夹路径添加到列表底部。完成后,它应该看起来像这样。

8. 单击每个打开的菜单上的确定,直到没有更多的菜单为止。
9. 为了确保 Windows 检测到新路径,请打开一个新的 CMD/PowerShell 提示符,并输入refreshenv
。
10. 通过输入terraform --version
来验证安装是否成功。如果返回一个版本号,那就可以了。
简便方法
哦,那是一项很多工作!每次在您的设备上安装新软件时都要这样做会很糟糕。我们可以使用包管理器来解决。有几个包管理器可以用来在 Windows 上安装 Terraform。对于 Windows,我最喜欢的是Chocolatey。它使安装、删除和更新软件变得简单,只需一行命令,而 Terraform 也不例外。
要使用Chocolatey安装 Terraform,请执行以下步骤:
- 以管理员身份打开 CMD/PowerShell 提示符,并使用它们的安装页面上的命令安装 Chocolatey。
- 安装完成后,运行
choco install terraform
。如果愿意,也可以在末尾加上-y
自动同意在设备上安装它。
运行该命令后,会得到类似以下的内容:
3. 通过输入terraform --version
来验证安装是否成功。
Linux 方法
I can almost hear what you’re thinking. Wait a minute Chris, didn’t you say this was going to cover installing Terraform on Windows?
是的,它仍然存在。但 Windows 10 的一个功能是 Windows for Linux Subsystem,或称为WSL。这使您能够在 Windows 上运行 Linux 命令。
- 安装 WSL。我不打算在这里深入讨论如何安装和设置 WSL,但如果您想跟着操作并且尚未设置好,可以在下面找到我在这个主题上做的 TechSnips 视频。
在您的 WSL shell 中运行apt-get install unzip
。您将需要这个来稍后提取 Terraform 二进制文件。
通过运行wget https://releases.hashicorp.com/terraform/0.12.6/terraform_0.12.6_linux_amd64.zip
来下载 Terraform。记得用最适合您设备的版本和架构替换。您可以在这里找到完整的 Terraform 版本列表。
4. 运行unzip terraform_0.12.6_linux_amd64.zip terraform
来解压缩zip文件的内容到一个名为terraform的文件夹中。
5. 一旦ZIP文件被解压缩,你需要将它移动到系统路径可访问的地方。幸运的是,Linux有一个默认允许用户添加二进制文件的文件夹。通过运行mv terraform /usr/local/bin/
将Terraform二进制文件移动到那里。/usr/local/bin文件夹已经设置在你的系统路径中。
6. 通过运行terraform --version
来验证安装是否成功。
自动化AWS Terraform EC2实例
现在你已经安装了Terraform,你可以开始使用它。在这篇文章中,我将演示如何使用一个简单的AWS Terraform EC2实例构建。但要知道Terraform可以配置数百种不同类型的基础设施。
要开始,你首先需要一个目录来运行Terraform EC2脚本。为每个环境设置一个单独的目录是很重要的。在我写这篇文章的时候,Terraform还没有过滤运行内容的方法。它将运行当前工作目录中的每个脚本。
设置TF脚本
- 在你的cmd或PowerShell控制台以管理员身份运行,运行
mkdir hello-terraform
然后cd ./hello-terraform
- 一旦您有了目录,您将需要一个 Terraform 脚本。以下是一个您可以使用的示例。这是一个使用 AWS 提供程序创建 AWS 实例资源的典型 Terraform 脚本。
如果您想要整个脚本,将其复制到下方。如果您想了解此脚本的作用,请继续阅读。
# Terraform HCL
3. 将上面的脚本保存为 main.tf
,并放在您的工作目录中。
理解 TF 脚本
在您继续之前,请看看下面的代码块以及它声明了什么。
# Terraform HCL
这个块告诉 Terraform EC2 要使用哪个提供程序。针对所有主要云供应商都有提供程序,以及一些本地供应商。如果您更高级并且知道如何编写 Golang,则还可以编写自己的提供程序。
这个块告诉 Terraform 使用 AWS 提供程序,并访问 ~/.aws/credentials
文件中的访问密钥,文件位于配置了 AWS CLI 时使用的默认配置文件。此文件在设置 AWS CLI 时通过 aws config
命令创建,如先决条件中所述。
值得注意的是,~/
是当前用户目录的缩写。如果您来自 Windows 背景,这相当于 $env:USERPROFILE
或 %USERPROFILE%
。但是 Terraform 在撰写时不支持该表示法。
以下是描述一个Terraform EC2实例以及如何构建它的下一段文字。如果你查看Terraform文档中的aws_instance,你会发现一些参数是必需的,一些是可选的。在这种情况下,必需的参数是用于Ubuntu 18.04 LTS的AMI ID(ami-07d0cf3af28718ef8
)和实例类型为t2.micro
。
通过传递一个标签块,键为Name
,值为HelloTerraform
,这个标签也会被分配给创建的实例。这是可选的。
# Terraform HCL
现在脚本已经设置好,通过在工作目录中运行terraform init
来调用它。这将下载所有依赖项和提供者到名为.terraform
的文件夹中。如果一切顺利,你应该会得到类似这样的输出:
在进行任何更改之前,Terraform EC2允许你通过运行terraform plan
来查看将要创建的内容。以下是输出的样子:
# 将创建aws_instance.ubuntu
构建AWS EC2实例:创建
现在你准备好运行它了,通过运行terraform apply
。下面你将看到类似于terraform plan
的输出,但会额外提示确认是否真的要应用这些更改。
一旦您输入“是”,Terraform EC2 将通过调用凭据文件中的访问密钥调用 AWS API 来开始配置 Terraform EC2 实例。这可能需要一些时间。完成后,您将看到如下内容:
销毁 AWS EC2 实例
完成测试环境后,您可以销毁该实例。
在您的 cmd/PowerShell 控制台中,键入 terraform destroy
。与 apply
命令类似,您将看到 Terraform 将要销毁的资源列表,然后会有一个提示才会实际销毁它们。
一旦您输入是,Terraform EC2 将开始销毁该实例,并在完成时进行确认。