Terraform: 基础设施即代码

简介: Terraform: 基础设施即代码

Terraform: 基础设施即代码

问题

现如今有很多 IT 系统的基础设施直接使用了云厂商提供的服务,假设我们需要构建以下基础设施:

  • VPC 网络
  • 虚拟主机
  • 负载均衡器
  • 数据库
  • 文件存储
  • ...

那么在公有云的环境中,我们一般怎么做?

在云厂商提供的前端管理页面上手动操作吗?

这也太费劲了吧,尤其是当基础设施越来越多、越来越复杂、以及跨多个云环境的时候,这些基础设施的配置和管理便会碰到一个巨大的挑战。

Terraform

为了解决上述问题,Terrafrom 应运而生。

使用 Terraform ,我们只需要编写简单的声明式代码,形如:

...
resource "alicloud_db_instance" "instance" {
  engine           = "MySQL"
  engine_version   = "5.6"
  instance_type    = "rds.mysql.s1.small"
  instance_storage = "10"
  ...
}

然后执行几个简单的 terraform 命令便可以轻松创建一个阿里云的数据库实例。

terraform

这就是 Infrastructure as code 基础设施即代码。也就是通过代码而不是手动流程来管理和配置基础设施。

正如其官方文档所述,与手动管理基础设施相比,使用 Terraform 有以下几个优势:

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

Provider & Module

你也许会感到困惑,我只是简单的应用了所写的声明式代码,怎么就构建出来了基础设施,这中间发生了什么?

其实简而言之就是 terraform 在执行的过程中内部调用了基础设施平台提供的 API 。

provider

每个基础设施平台都会把对自身资源的操作统一封装打包成一个 provider 。provider 的概念就好像是编程语言中的一个依赖库。

在 terraform 中引用 provider :

terraform {
  required_providers {
    alicloud = {
      source = "aliyun/alicloud"
      version = "1.161.0"
    }
  }
}
provider "alicloud" {
  # Configuration options
}

我们在写代码的时候经常会把某些可重用的部分剥离出来作为一个模块,而在 terraform 中,对基础设施的管理也是如此,我们能够把可重用的 terraform 配置组成 module 模块,我们即可以在我们 local 本地自己编写模块,也可以直接使用第三方组织好并且公开发布的 remote 模块。640.png


                                                               provider & module

最后

本文只是抛砖引玉罢了,有关 terraform 的更多内容还请参考官方文档及其它资料。

目录
相关文章
|
4天前
|
JSON 监控 Shell
搭建公司网络监控系统的基础设施:使用Terraform
在当今数字化的商业环境中,公司网络的稳定性和安全性至关重要。为了实现对公司网络的全面监控,搭建一个强大而灵活的监控系统是至关重要的一步。本文将介绍如何使用Terraform构建公司网络监控系统的基础设施,并通过一些实际的代码示例来说明。
256 2
|
弹性计算 架构师 安全
基础设施自动化实践——用Terraform自动化构建云上环境
前言在我们平时的开发工作中,经常会遇到需要搭建各式各样的云上环境,比如项目开发环境、测试环境、部署环境、客户展示环境等。而有时这些搭建过程并不轻松,如可能涉及很多台ECS,可能对镜像或配置有特殊要求,可能涉及较为复杂的网络配置等。而对于这些较为复杂多变的环境部署要求,传统的人工手动配置方法,不仅耗时费力,还有一个很大的问题就是难以追踪管理、难以复用。比如负责搭建环境的架构师如果休假了,团队其他人很
576 0
基础设施自动化实践——用Terraform自动化构建云上环境
|
运维 自然语言处理 Kubernetes
为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
在上篇《为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)》中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行回答。
为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
|
弹性计算 监控 数据中心
Segment:使用Docker、ECS和Terraform重建基础设施
本文讲的是Segment:使用Docker、ECS和Terraform重建基础设施,【编者的话】本文转帖自Segment公司CTO以及联合创始人Calvin French-Owen发表的文章。Segment公司采用独立的AWS账户进行真正意义上的隔离,采用Docker和ECS运行服务,并采用Terraform配置脚本进行整合并为服务描述添加Datadog供应商获得免费的监控告警信息。
1565 0
|
弹性计算 负载均衡 API
Terraform/Ansible on Cloud--基础设施和应用管理实践
在由阿里云研发协同RDC以及阿里云云栖社区联合举办的首届阿里巴巴研发效能嘉年华上,来自阿里云飞天八部企业服务云应用服务团队的高级研发工程师箫竹为大家分享了基础设施和应用管理实践,主要介绍了Terraform和Ansible两大自动化基础设施和应用管理工具,并结合实际应用场景介绍了如何在云上使用Terraform和Ansible工具提升基础设施和应用管理的效能。
11278 0
|
数据中心 iOS开发 MacOS
玩转阿里云 Terraform(三):Terraform 的安装和加速
本文以Mac OS为例,详细介绍如何在本地安装Terraform,并在文章最后介绍一种可以加速Terraform安装的方法。
15014 0
|
4天前
|
消息中间件 Kubernetes Kafka
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
Terraform阿里云创建资源1分钟创建集群一键发布应用Terraform 创建 Kubernetes 集群
33 0
|
10月前
|
Kubernetes NoSQL 持续交付
使用Terraform/Ansible/Kubernetes在阿里云上自动部署MongoDB
Terraform, Ansible, Kubernetes, MongoDB, AliCloud
302 1
EMQ
|
存储 JSON 安全
使用 Terraform 在阿里云上快速部署 MQTT 集群
本文将以分布式物联网 MQTT 消息服务器 EMQX 为例,采用阿里云作为公有云平台,介绍如何使用 Terraform 快速部署一个高可用的 MQTT 集群。
EMQ
235 0
使用 Terraform 在阿里云上快速部署 MQTT 集群
|
弹性计算 运维 自然语言处理
Terraform 支持自动化开通阿里云产品
## 什么是 Terraform 和云产品开通 **Terraform** 一款开源的运行在客户端的自动化资源编排工具,以 IaC 的理念实现云资源的自动化运维。更多细节可以参考 [Terraform 是什么](https://developer.aliyun.com/article/713099)。 **云产品开通**,顾名思义,就是阿里云客户在使用某些云产品前,需要登录云产品官方控
715 0
Terraform 支持自动化开通阿里云产品

推荐镜像

更多