前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Terraform 基础架构资源管理运维工具

Terraform 基础架构资源管理运维工具

作者头像
用户1278550
发布2024-01-04 13:14:23
1850
发布2024-01-04 13:14:23
举报
文章被收录于专栏:idbaidba

一 背景

越来越多的公司将整个IT系统部署到各个云上,一个完整的IT 服务包含但不限于如下部分:

  1. VPC 网络/交换机/ACL 配置
  2. ECS 虚拟机
  3. 负载均衡器
  4. 数据库 MySQL,Redis, 等等
  5. 文件存储服务
  6. 日志服务
  7. ...

在公有云的环境中,我们一般如何快速交付 公司的 IT 基础设施?在云厂商提供的前端管理页面上手动操作?当IT基础设施越来越多、越来越复杂、以及公司为了满足多云架构,跨多个云厂商环境的时候,这些基础设施的配置和管理便会碰到一个巨大的挑战。

提前说一句,云厂商提供的 openapi 或者provider 接口不一致 也是灾难。。

二 Terraform: 基础设施即代码

为了解决上述问题,Terrafrom 应运而生。Terraform 官方的定义如下:

代码语言:javascript
复制
Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.

Configuration files describe to Terraform the components needed to run a single application or your entire datacenter. Terraform generates an execution plan describing what it will do to reach the desired state, and then executes it to build the described infrastructure. As the configuration changes, Terraform is able to determine what changed and create incremental execution plans which can be applied.

The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc.

翻译过来大致如下:

  1. Terraform 是一个可以安全、高效地建立,变更以及版本化管理 IT 基础设施的工具,并可在主流的云服务提供商上提供自定义的解决方案。
  2. Terraform 以配置文件为驱动,在文件中定义所要管理的组件(基础设施资源),以此生成一个可执行的计划(如果不可执行,会提示报错),通过执行这个计划来完成所定义组件的创建,增量式的变更和持续的管理。
  3. Terraform不仅可以管理IaaS层的资源,如计算实例(虚拟机),网络配置,存储实例等,也可以管理更上层的服务,比如数据库服务,DNS 域名和解析记录,SaaS 应用的功能等

三 Terraform 核心功能

  1. 基础架构即代码(Infrastructure as Code)
  2. 执行计划(Execution Plans)
  3. 资源图(Resource Graph)
  4. 自动化变更(Change Automation)
基础架构即代码(Infrastructure as Code)

使用高级配置语法来描述基础架构,这样就可以对数据中心的蓝图进行版本控制,就像对待其他代码一样对待它。

执行计划(Execution Plans)

Terraform 有一个 plan 步骤,它生成一个执行计划。执行计划显示了当执行 apply 命令时 Terraform 将做什么。通过 plan 进行提前检查,可以使 Terraform 操作真正的基础结构时避免意外。

资源图(Resource Graph)

Terraform 构建的所有资源的图表,它能够并行地创建和修改任何没有相互依赖的资源。因此,Terraform 可以高效地构建基础设施,操作人员也可以通过图表深入地解其基础设施中的依赖关系。

自动化变更(Change Automation)

把复杂的变更集应用到基础设施中,而无需人工交互。通过前面提到的执行计划和资源图,我们可以确切地知道 Terraform 将会改变什么,以什么顺序改变,从而避免许多可能的人为错误。

Terraform 的优势:
  1. Terraform 可以轻松管理多个云平台上的基础设施。
  2. 使用人类可读的声明式的配置语言,有助于快速编写基础设施代码。
  3. Terraform 的状态允许在整个部署过程中跟踪资源的变更。
  4. 可以对这些基础设施代码进行版本控制,从而安全地进行协作。

四 简单的例子

我们仅仅只需编写简单的声明式代码,然后执行 Terraform 命令便可以轻松创建一个阿里云的数据库实例。

代码语言:javascript
复制
## 引用 provider 
terraform {
  required_providers {
    alicloud = {
      source = "aliyun/alicloud"
      version = "1.161.0"
    }
  }
}

provider "alicloud" {
  # Configuration options
}

### 申请数据库实例资源 RDS MySQL 5.7 版本,2c4g ,50G存储
resource "alicloud_db_instance" "instance" {
  engine           = "MySQL"
  engine_version   = "5.7"
  instance_type    = "rds.mysql.s1.small"
  instance_storage = "50"
  ...
}

基本逻辑是每个基础设施平台都会把对自身资源的操作统一封装打包成一个 provider, Terraform 在执行的过程中通过调用基础设施平台(各种云厂商)提供的 API 来实现各种云服务的申请,维护 等操作。

五 总结

Terraform是 HashiCorp 旗下的一款开源的 DevOps 基础架构资源管理运维工具。从云的使用者的角度,它能非常方便快捷的操作 "云服务产品", 进一步提升用户使用云服务的效率。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二 Terraform: 基础设施即代码
  • 三 Terraform 核心功能
    • 基础架构即代码(Infrastructure as Code)
      • 执行计划(Execution Plans)
        • 资源图(Resource Graph)
          • 自动化变更(Change Automation)
            • Terraform 的优势:
            • 四 简单的例子
            • 五 总结
            相关产品与服务
            云数据库 MySQL
            腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档