055-79000是我们分享Github、Gitee等开源社区优质项目的专栏,包括技术、学习、实用和各种有趣的内容。本期推荐的Terraform是一款安全高效地构建、更改和版本化基础设施的工具。
HashiCorp Terraform是一个基础设施即代码工具,允许您在可读的配置文件中定义云和本地资源,您可以对这些文件进行版本控制、重用和共享。然后,您可以在整个生命周期中使用一致的工作流来配置和管理所有基础架构。Terraform可以管理低级组件,如计算、存储和网络资源,也可以管理高级组件,如DNS条目和SaaS功能。
Terraform的主要特征基础设施是代码:它使用高级配置语法来描述基础设施。这允许您像处理任何其他代码一样对数据中心的蓝图进行版本控制和处理。此外,基础设施可以共享和重用。执行计划:Terraform有一个“计划”步骤,它将生成一个执行计划。执行计划显示了当您调用apply时Terraform将做什么。这可让您在Terraform操作基础设施时避免任何事故。资源映射:Terraform构建所有资源的映射,并并行创建和修改任何非依赖资源。因此,Terraform尽可能高效地构建其基础设施,运营商可以深入了解其基础设施中的依赖关系。变更自动化:复杂的变更集可以应用到您的基础设施中,只需要最少的人工干预。通过前面提到的执行计划和资源图,你可以准确的知道Terraform会改变什么,改变的顺序是什么,从而避免了很多可能的人为错误。Terraform是如何工作的?Terraform通过其应用编程接口(API)创建和管理云平台和其他服务上的资源。提供商通过可访问的API使Terraform能够与几乎任何平台或服务一起工作。
核心Terraform工作流程包括三个阶段:
写:您定义可能跨越多个云提供商和服务的资源。例如,您可以创建一个配置,通过安全组和负载平衡器在虚拟私有云(VPC)网络中的虚拟机上部署应用程序。计划:Terraform创建一个执行计划,描述它将根据现有基础架构和您的配置创建、更新或销毁的基础架构。应用程序:批准后,Terraform将按照正确的顺序执行建议的操作,并尊重任何资源依赖性。例如,如果您更新VPC的属性并更改该VPC中的虚拟机数量,Terraform将在扩展虚拟机之前重新创建VPC。
开始安装Terraform
要安装Terraform,请找到适合您系统的软件包,并将其下载为zip存档文件。
下载Terraform后,解压软件包。Terraform可以像名为terraform的包中的任何其他文件一样安全地删除。Terraform仍然可以运行。
最后,确保terraform二进制文件在您的路径中。此过程会因您的操作系统而异。
打印以冒号分隔的位置路径列表。
Echo $PATH将Terraform二进制文件移动到列出的位置之一。此命令假设二进制文件当前位于您的下载文件夹中,并且您的路径包含/usr/local/bin,但是如果您的位置不同,您可以自定义它。
mv ~/downloads/terraform/usr/local/bin/验证安装
通过打开一个新的终端会话并列出Terraform的可用子命令来验证安装是否正常。
$ terra form-help usage:terra form[-version][-help]command[args]下面列出了可执行的命令。最常用、最有用的命令首先显示,然后是不常用或更高级的命令。如果您刚刚开始使用Terraform,请坚持使用常用命令。对于其他命令,请在使用前阅读帮助和文档。# # .向terraform -help添加任何子命令,以了解有关其功能和可用选项的更多信息。
地形-帮助计划激活选项卡已完成
如果您使用尝试或Zsh,则可以为将(行星)地球化(以适合人类居住)命令启用制表符补全。要启用自动完成,首先确保您选择的壳存在配置文件。
碰~/。bashrc然后安装自动完成包。
地形-安装-自动完成安装自动完成支持后,您将需要重新启动贝壳。
快速入门教程
在本地计算机上安装将(行星)地球化(以适合人类居住)和码头工人后,启动码头工人桌面。
开码头创建一个名为学习-地形-码头-集装箱
mkdir学习-地形-码头-集装箱打开
激光唱片学习-地形-码头-集装箱将以下将(行星)地球化(以适合人类居住)配置粘贴到文件中并将其命名为main.tf
terra form { required _ providers { docker={ source=\’ kreuzwerker/docker \’ version=\’ ~ 2。13 .0 \’ } } }提供者\’ docker \’ { }资源\’ docker _ image \’ \’ nginx \’ { name=\’ latest \’ keep _ locally=false }资源\’ docker _ container \’ \’ nginx \’ { image=docker _ image。nginx。最新名称=\’教程\’端口{ internal=80 external=8000 } }初始化项目,该项目下载一个允许将(行星)地球化(以适合人类居住)与码头工人交互的插件。
地形初始化使用申请。当将(行星)地球化(以适合人类居住)要求您确认类型是并按输入。
地形应用通过在网浏览器中访问本地主机:8000多克著名图象处理软件或运行以查看容器来验证NGINX容器的存在。
构建基础设施先决条件
要遵循本教程,您将需要:
已安装Terraform CLI (1.2.0)。已安装AWS CLI。允许您创建资源的自动警报系统账户和关联凭证。要使用您的国际机械工程师协会国际机械师协会凭证对Terraform AWS提供商进行身份验证,请设置AWS_ACCESS_KEY_ID环境变量。
导出AWS_ACCESS_KEY_ID=现在,设置您的密钥。
导出AWS_SECRET_ACCESS_KEY=写配置
在将(行星)地球化(以适合人类居住)中用于描述基础设施的文件集称为将(行星)地球化(以适合人类居住)配置。您将编写您的第一个配置来定义单个AWS EC2实例。
每个将(行星)地球化(以适合人类居住)配置必须位于其自己的工作目录中。为您的配置创建一个目录。
mkdir learn-terra表单-AWS-实例切换到目录。
激光唱片学习-地形-AWS-实例创建一个文件来定义您的基础架构。
触摸main.tf在文本编辑器中打开main.tf,粘贴下面的配置,然后保存文件。
terra form { required _ providers { AWS={ source=\’ hashi corp/AWS \’ version=\’ ~ 4.16 \’ } } required _ version=\’=1。2 .0 \’ }提供者\’ AWS \’ { region=\’ us-west-2 \’ }资源\’ AWS _ instance \’ \’ app _ server \’ { ami=\’ ami-830 c94 E3 \’ instance _ type=\’ T2。micro \’ tags={ Name=\’ exampleappservercinstance \’ } }使用输出查询数据初始配置
遵循此集合中的先前教程后,您将拥有一个学习-地形-AWS-实例使用以下配置命名的目录。
# main。tfterraform { required _ providers { AWS={ source=\’ hashi corp/AWS \’ version=\’ ~ 4.16 \’ } } required _ version=\’=1。2 .0 \’ }提供者\’ AWS \’ { region=\’ us-west-2 \’ }资源\’ AWS _ instance \’ \’ app _ server \’ { ami=\’ ami-08d 70 e 59 c 07 c 61 a 3 a \’ instance _ type=\’ T2。“微”标签={ Name=var。实例名称} } #个变量。TF变量“instance _ Name“{ 0确保您的配置与此匹配,并且您已在学习-地形-AWS-实例目录中初始化配置。
地形初始化在继续本教程之前应用配置。使用响应确认提示是的。
地形应用存储远程状态设置将(行星)地球化(以适合人类居住)云
修改main.tf以将云块添加到您的将(行星)地球化(以适合人类居住)配置,并替换组织名称为您的组织名称
terra form { cloud { organization=\’ ORG _ NAME \’ work spaces { NAME=\’ Example-Workspace \’ } } required _ providers { AWS={ source=\’ hashi corp/AWS \’ version=\’ ~ 4.16 \’ } } }登录将(行星)地球化(以适合人类居住)云
接下来,使用终端中的Terraform CLI登录到您的地形云帐户。
$ terraform loginTerraform将使用您的浏览器为app.terraform.io请求一个应用程序接口令牌。如果登录成功,地形将以明文形式将令牌存储在以下文件中,供后续命令使用:/Users/USER/。terra形态。d全权证书。tfrc。JSON是否要继续?只接受\”是\”进行确认。输入一个值:使用a确认是并按照将自动打开的浏览器窗口中的工作流程进行操作。出现提示时,您需要将生成的应用程序接口密钥粘贴到终端中。
设置工作区变量
该地形初始化步骤示例-工作空间在您的地形云组织中创建了工作区。您必须使用您的自动警报系统凭证配置您的工作区以对自动警报系统提供商进行身份验证。
导航到示例-工作空间地形云中的工作区,然后选择\”变量\”选项卡。在\”环境变量\”部分添加您的AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY确保将它们标记为\”敏感\”。
—结束—
开源协议:MPL-2.0许可证
开源地址:https://github。com/hashi corp/terra表单