应知必会的自动化工具-Terraform Explorer
Terraform Explorer 是一款面向 Terraform 的在线调试工具,可以帮助开发者实现 0 门槛体验 Terraform,让「自动化」更轻松!本视频具体介绍了Terraform Explorer的操作和使用。
应知必会的自动化工具-Terraform Explorer
以下是视频转写全文,供参考:
hello, 大家好,欢迎回到阿里云开放平台自动化专栏AutoTalk。本期我们带来的分享是阿里云上Terraform的最佳伴侣Terraform Explorer。今天给大家带来的内容主要包含以下四个方面。首先向大家简单介绍一下Terraform是什么,以及在云上使用Terraform最佳用户旅程是什么样的。接下来会重点向大家介绍Terraform Explorer的产品定位以及它的核心功能点。最后我们会通过两个简单的示例演示,向大家介绍如何使用Terraform Explorer。
Terraform是HashiCorp公司开源的一款资源编排工具,它也是IaC领域的代表工具。它的运行机制是将我们所需要管理的基础设施资源以声明式的方式定义为开放代码。然后通过对开放代码的操作来实现对这些基础设施的自动化创建和修改。在操作Terraform代码的时候,它是以插件化的方式来实现的。插件在Terraform里面称之为provider。
每个云服务厂商都会提供面向各自云服务的provider。每个provider里面实现了对基础设施资源的抽象定义,以及对这些基础设施资源所依赖的API的编排。当我们执行Terraform代码的时候,Terraform会解析Terraform代码中所定义的所有这些基础设施资源。然后通过资源类型找到相对应的provider,进而调用provider里面相对应的API,来完成对这些基础设施资源的自动化创建。并且在创建完成之后,会将这些创建出来的基础设施资源的属性和状态保存在一个叫做Terraform state的状态文件里面。当我们下一次再需要对已有的基础设施做进一步修改和变更的时候,只需要修改其中的代码片段,它就会对比当前的代码内容和状态文件是否一致。只有当出现不一致的时候,它才会将这个变化后的代码进行一次操作,进而完成对基础设施的变更。
Terraform在具体使用的过程中是基于一个标准的工作流的。首先我们需要根据自身的业务需求确定我们所需要管理的基础设施资源,然后根据这些资源编写相应的Terraform代码。在完成代码的编写之后,我们需要执行Terraform init的命令,来完成对代码中所依赖的provider的自动化的下载和安装。在完成初始化之后,执行Terraform apply命令来完成对代码结果的预览。在确定预览结果是符合我们预期之后,我们再次执行Terraform apply命令,来实现对代码的实际执行,以及对这些代码中所定义资源的实际创建。基于这样一个标准的工作流,我们也是梳理出来了在云上使用Terraform的用户旅程。
对于初级用户,我们需要关心的是如何能够快速地安装和配置一个Terraform环境。然后能够快速地编写一份Terraform代码,进而完成对Terraform的使用和体验。对于进阶用户或者企业用户来说,除了上面两部分,我们还需要关注是Terraform如何与自身的业务进行集成,如何在运行的过程中实现自动化的工作流程,同时在执行过程中如何保障基础设施的质量。Terraform Explorer是我们提供的一个在线服务,它通过对Terraform环境的托管以及对Terraform命令的自动化执行,来持续降低云上的开发者和用户对Terraform的使用门槛。
为此Terraform Explorer提供了代码编写、一键运行、状态管理这三大核心功能。其中代码编写主要体现在两个方面。第一,对于单资源类型,我们提供的这种表单转化的能力,来实现对单资源类型代码的自动生成。对于多资源类型,我们提供了一些丰富的模板示例。通过选择不同的模板示例,或者对已有的模板示例进行在线编辑,来满足自身的业务需要。
一键运行主要体现在它实现了对Terraform命令的自动化的运行,我们只需要通过简单的按钮操作,就可以实现对Terraform命令的自动执行,进而完成对这些资源的创建。在资源创建完成之后,它会自动实现对状态文件的托管。托管后的状态体现在两个方面。第一,我们将这些状态文件中所包含的资源类型以结构化的方式进行了展示。您可以通过页面的简单浏览,查看到所有管理这些基础设施资源的属性及其状态。第二,基于托管后的状态,我们可以实现对所有历史任务的持续运行和调试。
接下来我会通过两个简单的示例演示,向大家介绍如何使用Terraform Explorer。第一个是通过Terraform创建一个简单的VPC资源。第二个是通过Terraform Explorer搭建一个Flask web应用,它涉及到多种资源类型的操作。首先我们进入到API门户页面,api.aliyun.com。在这个页面我们选择工具中心里面的Terraform调试工具。点击之后它会自动跳转到我们Terraform Explorer的主页面。在这个页面我们可以看到左侧是我们Terraform Explorer所支持的所有provider的版本,以及它所支持的产品列表,以及每个产品下面它所支持的资源类型列表。右侧是针对每个资源类型的详细的资源文档,以及它的调试历史。
我们第一个示例是通过Explorer创建一个VPC。所以我们首先选择VPC这个产品,然后选择alicloud_vpc这个资源类型。在这个选择之后,我们可以看到下方会展示所有跟这个资源类型相关的一些资源属性。这些属性有些是必填的,有些是选填的。对于必填的属性,我们将在这些属性的前面增加一个星号。比如说我们可以看一下vswitch这个资源类型,它总共有两个必填的属性,一个是cidr_block一个是vpc_id,其他的属性都是选填的。我们切回到VPC的时候,可以看到它所有的属性其实都是选填的,这个时候我们可以直接对它进行发起调试。
为了演示方便,我们这里选择其中两个资源属性,对它们设置一个值。第一,我们选择一个地域,在青岛创建一个VPC。第二,我们为这个VPC起一个名称,比如说就叫做xiaozhu_demo发起调试。我们会发现Terraform Explorer会为我们自动创建一个任务。这个任务名称是根据当前的资源类型和对应的时间戳来生成的。我们也可以根据自身的业务需要对它进行一次修改。比如说在xiaozhu前加上一个前缀。下面详细展示了通过表单所自动转化之后的一个Terraform模板、VPC名称、region ID以及它所对应的provider版本。
确定没有任何问题,点击预览按钮,它将会自动帮我们执行Terraform init和Terraform apply 命令。这里面我们会发现有两个按钮,一个叫做预览,一个叫做预览并执行。这两个按钮的区别在于,预览是在执行完成之后需要人工的二次确认,而预览并执行是执行完预览之后,它会自动执行Terraform apply命令。我们刚才选择的是预览这个按钮。在执行完成之后,我们可以根据预览的结果进行操作。
我们查看预览结果,确认符合我们预期之后,点击执行按钮,它就会自动帮我们创建这样一个VPC。并且在创建完成之后,它会在我们的资源详情页面基于我们进行的状态自动托管。我们在基于这个托管后的状态文件,将所有这些已经创建的资源进行了结构化的展示。我们可以在执行完成之后,在资源详情页面看到它所托管的资源,创建的资源类型以及对应的资源属性。
比如说创建完成了一个VPCID,然后有它的网段、创建时间等等。那么我们复制这个ID,可以登录到VPC控制台,验证一下是不是我们刚才所创建的那个VPC。我们刚才是在青岛创建的,登录之后可以看到这个VPC确确实实创建出来。
当我们需要对它进行二次修改的时候,其实我们还是一样回到这个调试任务。在左侧的这些参数中,可以对已有参数进行修改,也可以对一个空的参数进行填写。比如说我们去修改VPC描述保存并继续调试。我们可以看到它会在原有的模板基础上增加一个description字段。
确定没有问题之后,我直接使用预览并执行。这时候它会让我们不需要二次确认,我们看一下效果。在修改之前,我们看到它的描述其实是空的。我们稍等它执行完成之后,看看它的结果是否真的被修改过,进入到执行中了,所以它的预览应该是已经结束了。你看它的修改的描述,这时候我们执行完成了,我们看一下它的描述就已经修改过来了。
这个就是我们第一个演示示例,创建一个VPC。接下来我们会演示第二个示例,就是在ECS上创建一个Flask web应用。因为涉及到ECS资源,所以我们首先切换到ECS这个产品,然后选择instance的这个资源类型。因为涉及到一个多资源操作,我们提供了一个Flask web应用搭建的示例模板。选择这个示例模板,我们可以看到完整的搭建一个Flask web应用所需要的所有代码。其中定义了各种各样的变量,包括我们要在UI和web页面上输出的内容,以及它实例的名称,以及各种资源类型。
包括创建VPC、VSwitch、安全组ECS实例,以及像有一个22端口和500端口。其中22端口是为了在ECS创建完成之后登录并部署我们的Web应用。第二个是500端口,是Flask的默认访问端口。当确定没有任何问题的时候,我们点击发起调试,同样的它会为我们默认创建一个任务名称,修改一下。下面也是会将我们之前的一个模板代码带过来,确定没有任何问题。
点击预览。预览完成之后我们可以看到它总共需要七个资源来进行创建。同时在创建完成之后,它还会输出一个Flask web URL 作为访问地址。点击执行确认没有问题。点击执行后,它将会依次创建VPC资源、VSwitch、安全组、ECS实例,以及在实例上部署Flask。
刚才我们看到预览详情里面的那个 Flask URL。它其实是通过我们模板中的一个output出参进行了定义。这个URL 的值是通过ECS”实例的一个公网IP 加上500端口所拼接出来的。因此,当实例创建完成之后,这个相对应的Flask URL也就自动生成了。在执行完成之后,我们就可以复制这样一个URL。然后通过浏览器访问,就可以在页面上看到“你好,阿里云”这样一个字段,就是这句话。
执行完成了,复制一下这个URL,去浏览器中输入一下就可以看到“你好阿里云”这句话。当我们需要对它进行修改时,可以通过左侧的一些的参数变化。比如,我们可以将“你好”改成hello”。
还有一种修改方式是什么呢?在这地方我有一个编辑模式,点击这个编辑模式,我们就可以对这个实例模板的内容进行自定义修改。比如说我们需要对这个名称进行修改,我们在这里增加一个后缀demo。那么修改后的内容也可以看到,它其实会同步到我们左侧的这个表单页面里面。此时候我们可以关闭这个编辑按钮,显示diff我们就可以看到刚才所修改的两个内容。一个是通过表单所修改的,将“你好改成hello。另一个是我们通过编辑的方式,将我们的这个内容从实例名称变化成了加了一个后缀,确认没有任何问题,保存并进行调试。
这个时候我们再去点击预览并执行,也可以先点击预览再点击执行,都是可以的。点击预览并执行后,我们可以看到它会自动的完成对这些实例名称的修改,以及我们输出内容的变更。当然了,我们也可以在资源详情页面查看到当前这个资源类,以及当前这个实例模板所创建出的所有资源类型。这时候我们可以数一下,刚才它总共有123456个资源类型。其实在我们预览的时候,它总共有七个原因。原因是因为我们这里只对阿里云的资源类型进行结构化的展示。我们先看一下instance的名称,之前应该是没有一个_demo后缀的。在它执行完成之后,我们可以看到它应该会进行修改。OK,现在有了那么在它执行完成之后,我不需要去变更原有的URL,只需要对它进行刷新,就可以看到变更后的内容。
在执行完成之后,如果不再需要这个环境,我们可以点击“销毁资源这个按钮,对这些创建出来的资源进行一键的销毁。这个销毁资源”按钮会首先进行预览,在预览完成之后需要我们人工的二次确认。确认没有任何问题之后,它会执行Terraform apply命令,来完成这些资源的自动化销毁。
有没有一个像预览并执行这样一个可以自动销毁的按钮呢?是有的。这个按钮其实可以通过我们的调试历史里面找到,这里面有一个叫做销毁资源。点击这个销毁资源,它将会自动完成对这些资源的销毁,不需要人工的二次确认。
这个其实就是我们第二个实例,刚才我们在PPT里面讲了,其实对于状态的托管,一方面是体现在我们调试之后,可以将资源详情以结构化的方式展示。另一方面是我可以对历史的调试任务进行持续的调试。比如说我回到刚才演示的那个VPC调试任务里面,如果我们需要对VPC这个历史任务进行持续的调试,我们可以点击继续调试这个按钮。它会在原有的调试基础之上,进行持续的运行,不会改变原有的一些状态。比如说在描述里面增加一个demo这样的后缀,我们点击这个保存并调试。会展示出来我们刚才修改的内容。由于时间关系,这里面就不再进行进一步演示。
这一方就演示一下刚才我们提到的这个会自动销毁资源的按钮。点击这个按钮之后会有一个提示,叫做这个操作将会自动执行并销毁该任务下面所有资源。所以说需要我们特别注意,我们点击确认,它就会完成对这个VPC的自动销毁。在销毁过程中,我们也是为大家推荐几个访问我们要explorer的入口。
第一个是我们可以进入到阿里云的provider这样一个社区的官方页面。在官方站点中,我们为每个资源类型的每个实例都会增加一个Explorer in alibabacloud按钮。您点击这个按钮之后,它将会自动跳转到我们Terraform Explorer页面。当然跳转过来之后,它其实是个英文的界面。您可以选择页面上的地球仪,选择简体中文,将其切换为中文版的。切换之后我们可以看到它跳出来后,会默认帮我们选择对应的产品资源类型,以及我们文档中这个示例代码所对应的示例模板的名称。同时,它会加载出来这个示例代码,与我们文档上看到的是一模一样的,这是第一个快捷入口。
第二个快捷入口是我们可以访问的,我们可以在阿里云的帮助文档中心搜索Terraform。搜索到第一个条目,我进入了这个Terraform的帮助文档的中心。在这里,我们同样有一个资源列表。这个资源列表其实可以和社区上的资源文档展示的内容是一样的。
那么还是一样的,我们可以通过点击其中的某个资源类型,在每个资源类型里面,它也有这样一个explorer in alibaba cloud的按钮。你点击之后,它会自动跳转到Explorer页面。并且跳转过来之后,它就是这样一个中文界面。同时会帮我们选择相应的资源类型和对应的实例模板。这是给我们第二个快捷入口。
第三个快捷入口是我们在官网这个地方提供了非常多的入门指南。比如说这里面有Terraform入门指南以及我们的一些实践教程。在这里,比如说ECS的实践教程,我们都会为您增加一个一键运行的按钮。您点击这个按钮之后,它会自动跳转到我们的Terraform Explorer页面,并且会为您自动加载出相应的最佳实践实例模板。基于这个实例模板,您也可以进行快速的调试。这就是我今天给大家演示的三个快捷入口。第一个是我们的社区的文档页面有一个“Explorer in Alibaba Cloud”按钮。第二个是在我们的Terraform的官方站点里面,通过资源列表中的每个资源类型里面有一个按钮,以及我们的实践教程和使用入门指南中也有各种各样的按钮。回到我们的Explorer页面,我们看一下刚才执行销毁的操作,它已经成功销毁,不需要我们二次确认。
这个就是我今天为大家演示的两个案例,欢迎大家访问到我们Terraform Explorer,进行进一步的调试和使用。
以上就是本期分享的全部内容。如果您有任何的疑问或关于云上自动化的想法,欢迎扫描屏幕下方的二维码,加入钉群与我们交流,期待与您联系,下期再见。