云原生学习笔记1:Iac以及Terraform

1 功能:

  • IaC:infrastructure as code,用代码管理基础设施
  • 执行计划:显示terraform apply时执行的操作
  • 资源图:构建所有资源的图形
  • 变更自动化:基于执行计划和资源图,可以清晰知道要变更的内容和顺序

总结:terraform用于各类基础设施资源初始化,支持多种云平台,支持第三方服务对接

2 使用场景

构建多层应用

  • 支持常见的两层应用:webserver tier/ db tier;
  • 非常方便扩展其它分层,例如caching tier/ api server tier等
  • 自动管理每个分层之间的依赖关系

自助服务集群

  • 由工具团队基于terraform开发基础设施管理工具
  • 业务部门通过黑盒使用这些工具,管理自己的基础设施

一次性环境

  • 通过terraform的配置,能够快速搭建一个生产环境的镜像出来
  • 可以用于维护stagging环境或者快速搭建测试环境

SDN

  • 通过terraform管理虚拟网络,例如aws 的vpc等

资源调度

  • terraform可以通过对接各种公有云的基础设施接口管理基础设施
  • terraform还可以跟mesos/yarn/k8s等系统集成,通过terraform调度这些系统里面的资源

多云管理

  • 公有云提供的工具一般只能支持自己的公有云平台
  • terraform跟公有云无绑定关系,可以通过terraform管理多种公有云资源,例如aws/azure/阿里等

3 竞品对比

  • terraform提供关于资源和提供商的弹性抽象
  • 模型支持包括物理硬件、虚拟机、容器、dns等资源
  • 可以管理单个应用程序到整个数据中心

chef / puppet

  • chef/puppet:配置管理工具,一般部署在已经存在的服务器上,进行配置管理工作
  • terraform:专注于基础设施的初始化工作,基础设施(例如服务器)初始化完成后,terraform支持集成任意的配置管理工具

cloudformation / heat

  • cloudformation:aws提供的IaC工具,基于配置文件,可以快速管理aws资源(创建/更新/销毁等),资源包括虚拟机,auto-scaling策略,load-balance等等
  • heat:和cloudformation类似,时openstack中用于创建基础设施的工具
  • terraform:与云服务商无绑定关系,可以同时管理多个云服务商,例如aws/azure/ipenstack,同时可以引入第三方服务,例如第三方的dns管理服务
  • terraform将计划和执行分开,可以通过terraform plan和graph查看执行的计划和资源图,明确知道即将进行的操作

boto / fog

  • boto/fog:api封装不同云平台的一些操作,例如创建一个虚拟机等,同时还有一些工具用于适配不同的云平台的差异,致力于提供统一的api接口
  • terraform:希望用户在使用时会知道里面的细节,例如资源是如何被创建、组合、使用等等,而不是提供傻瓜式的api

客户定制解决方案

  • 定制解决方案:针对客户场景开发而成,扩展性/维护性较差,新功能引入时需要进行开发,代价较大,如果要覆盖不同的场景(例如不同的基础设施),工具开发成本较大
  • terraform:开源、使用简单、扩展性很强,标准统一,无需自己开发和维护

4 案例

4.1 aws 两层结构

  • terraform-providers:中集成了当前几乎所有公有云的iac工具实现
  • terraform aws 工具集:封装了aws的iac工具实现,例如申请ec2,创建vpc等等
  • 编写配置文件:内容为按照手工操作流程,逐个调用aws工具集的工具实现
  • terraform init/plan/graph/apply执行即可
posted @ 2020-09-01 19:48  SailorXiao  阅读(957)  评论(0编辑  收藏  举报