Terraform安装完毕,我们直接开始创建一些基础设施。我们通过在AWS上创建一些基础设施来开始入门指南,因为它是最受欢迎和普遍理解的,但Terraform可以管理许多提供者,包括在单个配置文件中管理多个提供者。用例中有一些示例。如果您没有AWS账户,请创建一个。在入门指南中,我们将仅使用AWS免费试用资源,这意味着它是免费的。如果您已经有AWS账户,您可能需要收取一些费用,但最多不会超过几美元。警告!如果您没有使用AWS免费试用账户,您可能需要充值才能运行这些示例。您可能需要加起来几美元,但我们不对可能产生的任何费用负责。Terraform中用于描述基础设施的配置文件称为Terraform配置文件。现在我们将编写第一个配置文件来启动AWSEC2实例。配置文件的文档在这里。配置文件也可以是json文件,但是我们建议在机器生成配置文件时只使用json格式。整个配置文件内容如下。我们将引导您完成接下来的每个步骤。将以下内容保存到名为example.tf的文件中。确保您的目录中没有其他*.tf文件,因为Terraform将加载所有*.tf文件。提供商“aws”{access_key=“ACCESS_KEY_HERE”secret_key=“SECRET_KEY_HERE”region=“us-east-1”}资源“aws_instance”“example”{ami=“ami-2757f631”instance_type=“t2.micro”}注意:上述配置适用于大多数AWS账户并将访问默认VPC。EC2经典网络用户,instance_type请指定t1.micro,ami请指定ami-408c7f28。如果您使用us-east-1以外的区域,您将需要指定该区域的ami,因为每个区域的ami都是特定的。将ACCESS_KEY_HERE和SECRET_KEY_HERE替换为您的访问密钥和秘密密钥,可从此页面获得。我们现在对它们进行硬编码,但稍后在入门指南中我们会将它们提取到变量中。注意:如果您只是遗漏了AWS凭证,Terraform将自动从保存的API凭证中搜索(例如:在~/.aws/credentials中)。或IAM实例配置文件凭证。此选项对于将文件签入源代码管理或存在多个管理员的情况更加清晰。去这里了解详情。将凭证信息保留在配置文件之外允许您将凭证信息保留在源代码控制之外,并且还可以在不修改配置文件的情况下为不同的用户使用不同的IAM凭证。这是一个完整的可执行Terraform配置文件。总体结构应该直观明了。提供者块用于指定提供者名称,在我们的例子中称为“aws”。提供者负责创建和管理资源。如果Terraform配置文件包含多个提供者,则可以有多个提供者块,这是常见的情况。资源块定义存在于基础设施中的资源。资源可以是物理组件,例如EC2实例,也可以是逻辑资源,例如Heroku应用程序。资源块开始前有两个字符串:资源类型和资源名称。在我们的实例中,资源类型是“aws_instance”,资源名称是“example”。资源类型的前缀映射到提供者。在我们的示例中,“aws_instance”自动告诉您Terraform由“aws”提供商管理。资源块内部是资源的配置。它独立于每个资源提供者,并在提供者参考中完整列出。对于我们的EC2实例,我们为ubuntu指定了一个AMI,然后请求一个“t2.micro”实例,因为我们有资格免费使用。为新配置文件或从版本控制工具检出的现有配置执行的第一个命令是terraforminit,它将初始化各种本地配置和数据以供后续命令使用。Terraform使用基于插件的结构来支持各种基础设施和服务提供商。从Terraform“0.10.0”开始,每个提供者都有自己的打包和分布式二进制文件,与Terraform分开。terraforminit将自动为下载配置文件中包含的提供程序下载插件。在此实例中仅包含“aws”插件。$terraforminitInitializingthebackend...Initializingproviderplugins...-downloadingpluginforprovider"aws"...以下提供程序在配置中没有任何版本限制,因此安装了最新版本。防止自动升级到新的可能包含重大更改的主要版本,建议在配置中将version="..."约束添加到相应的provider块,约束字符串如下所示。*provider.aws:version="~>1.0"Terraform已成功初始化!您现在可以开始使用Terraform了。尝试运行“terraformplan”以查看您的基础架构所需的任何更改。所有Terraform命令现在都应该可以使用。如果您曾为Terraform设置或更改模块或后端配置,请重新运行此命令以重新初始化您的环境。如果您忘记了,其他命令会检测到它并在必要时提醒您这样做。aws提供程序插件与其他薄文件一起被下载安装到当前目录子目录。输出会显示安装的插件版本,建议在配置文件中指定版本,以确保terraforminit以后安装兼容的版本。后续步骤不需要此步骤,因为配置文件稍后会被丢弃。应用程序更改注意:本指南中列出的命令适用于Terraform0.11及更高版本。早期版本需要先使用terraformplan命令查看执行计划,然后再应用。使用terraformversion命令确认您当前的terraform版本。以你在当前目录下创建的example.tf为例,执行terraformapply。您会看到类似于以下内容的输出,我们将其截断以节省空间:$terraformapply#...+aws_instance.exampleami:"ami-2757f631"availability_zone:"
