Terrform 基础 工作流
了解k8s的知道,我们会去写一些yml类型的文件,写完yml之后,使用了kubectl这个工具去创建,其实这个工具调用的就是k8s的api,最后将我们的资源创建出来,它可能是个pod。tf根据我们的配置文件去操作provider,去操作每个云的插件,每个云的供应商都会提供对应的插件,比如aws可能就提供了aws插件,这个插件最后操作的就是云的api。tf核心工作流程,writer阶段,就是我们去写
terrform现在还不算是特别的成熟,后期发展起来肯定是非常强大的,terrform可以管理任何的基础设施,其次可以对基础设施的版本化进行管理,比如写代码将代码存放在版本系统里面,就是为了方便回滚。
同样可以将基础设施作为代码托管到版本系统里面,然后进行跟踪。
我们仅仅需要声明我们所需要的资源,无需考虑底层逻辑,它会自动的帮我们去实现。
比如搭建web集群,都会有域名,域名绑定的是IP,肯定要将ECS创建起来之后才会有IP,这个时候才会创建域名的DNS解析记录,这里面逻辑就不需要你去关心了,tf会会自动帮你生成。
多云混合云的部署。
tf提供了工具,就是命令行,命令行有工作流,通过工作流来管理它所支持的云服务。
对于我们来说,重点就是编写声明式的配置文件,它有一套自己的语法。写好配置文件之后由tf去调用云供应商的api接口来实现我们所定义的资源。
了解k8s的知道,我们会去写一些yml类型的文件,写完yml之后,使用了kubectl这个工具去创建,其实这个工具调用的就是k8s的api,最后将我们的资源创建出来,它可能是个pod。
tf也是一样,只不过用它的格式来写配置文件,然后由tf去创建,tf其实调用的也是其api,最终生成资源,这可能是vm。
tf工作流:首先是去写配置文件,然后去列一个计划,然后去看部署计划,先来进行review,最终应用到生产环境当中,去发布。
tf根据我们的配置文件去操作provider,去操作每个云的插件,每个云的供应商都会提供对应的插件,比如aws可能就提供了aws插件,这个插件最后操作的就是云的api。
所以tf是通过其api来在云平台上面创建和管理资源。
provider就是一个可插拔的插件,只要你有provider,tf都可以通过provider里面所定义的api来访问创建这些服务。
tf核心工作流程,writer阶段,就是我们去写,去定义我们所需要的资源,这一块其实就是让我们去修改配置文件,写配置文件就是我们需要什么资源。
当你写好配置文件,执行terrform plan这个命令的时候,这里会列出来,根据你的配置文件,创建以及其他更新的东西。
假设当前运行了ecs,然后配置文件里面又加入了ecs,那么它拿当前一台ecs和你配置文件里面定义的两台ecs去做对比,然后在计划里面就可以看出多的那一台,然后做增量的部署。
这些逻辑都是tf内置的,帮我们去实现了。
这个步骤挺重要的,写完配置文件最好都在这里看一下,做哪些变更。这个就类似于代码review一样。
确定计划没有问题了,这个时候就可以去发布了。
当你执行apply去发布的时候,会让你输入y,是否要执行。那么tf就会按照之前的计划去执行了,子啊各个云供应商去创建资源。
顺序,依赖关系是tf自动帮你处理的,不需要关心它,只需要写你需要哪些资源,后面都是它来帮你去做的。例如先创建vpc,再创建虚拟机。
总结
基础设施发生了变化,因为企业都在上云,都在使用云计算,可能是自建的云计算,有可能是云供应商提供的这些服务,上云之后解决了成本,维护问题。
云定义了网络,服务器,存储等等这些资源,云的好处就是按需使用,根据业务的需求来动态的调整业务。
上了云之后,都是通过云供应商提供的控制台来操作的,来操作我们所有的资源,但是遇到了新的问题就是控制台虽然方便,当你创建很多套环境,对环境做了哪些变更,那么就要依赖控制台,不能形成操作历史的记录,或者说是复用。
还有在多云平台的情况下,当你有多个云供应商的情况下,那么在创建资源的时候,就非常不方便了。
这样就可以使用基础设施及代码来管理我们所有的资源,其实就是以代码的方式来管理我们的基础设施,最后就会使用tf工具。(tf社区提供了丰富的插件)。
编写定义我们所需要的资源,到计划review我们的资源,最终发布到云服务器。
更多推荐
所有评论(0)