前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Terraform—基础设施即代码(Iac)

Terraform—基础设施即代码(Iac)

作者头像
tunsuy
发布2023-10-23 17:47:25
3150
发布2023-10-23 17:47:25
举报

简介

IAC(基础设施即代码),是指通过编写代码来进行基础设施的定义,部署,更新与销毁。让基础设施的变更同代码一样,具有版本控制的能力,同时可以通过codeReview 进行审阅,保障其可靠性与一致性。只需要做好基础设施可变与不可变部分的划分,即可通过流水线工具及相关策略对可变部分进行动态调整,完成基础设施的自动化编排与管理。

Terraform 是 Hashicorp 公司开源的一种多云资源编排工具。使用者通过一种特定的配置语言(HCL, Hashicorp Configuration Language)来描述基础设施, 由 Terraform 工具统一解析,构建资源之间的关系,生成执行计划,调用各家云厂商的具体实现来完成整个基础设施生命周期的管理。

原理

Terraform 通过插件( Plugin = Provider + Provisioner ) 进行多种基础设施资源的管理与编排,其中每个 provider 都是独立进程, 可以保证多云场景下的相互隔离。Terraform 通过自研的 go - plugin 调用 providers, provider 通过 https 调用各平台 sdk 实现资源的创建, 更新与销毁 。插件隐藏了 API 调用细节,以便直接使用 terraform 命令完成平台资源的 curd 操作。

Terraform 目前支持超过 1900 种 provider ,包括熟知的 Tencent Cloud,Alibaba Cloud,Kubernetes 等,可通过 Browse Provider 进行查询,且大多数云平台的 Provider 均维护了详细的 Terraform 资源文档,提供 HCL 编写范例, 降低了引入 Terraform 带来的 HCL 语言学习成本。

使用

常见的 terraform 命令有初始化(init)、 静态检查(validate)、资源状态同步(refresh)、生成执行计划(plan)、执行编排(apply)等。

Terraform 使用 HCL 语言进行声明,同时兼容 JSON 格式。因此 Terraform 可识别的文件类型必须是 .tf 或 .tf.json ,详见 HCL 语法文档。

Terraform会将整个资源部署情况更新在 *.tf.state 文件中,让用户在前端控制台和后端平台都清晰的把控自己的云资源。

示例

在新目录下创建 provider.tf 文件,填入秘钥和区域信息

代码语言:javascript
复制
terraform {
  required_providers {
    tencentcloud = {
      source  = "tencentcloudstack/tencentcloud"
      version = "1.60.5"
    }
  }
}
 
provider "tencentcloud" {
  secret_id  = "*******"
  secret_key = "*******"
  region = "*******"
}

保存该文件,执行 terraform init 初始化Terraform。

此步骤,Terraform会自动检测 provider.tf 文件中的 provider 字段,发送请求到Terraform官方GitHub下载最新版本腾讯云资源的模块和插件

同时,可以通过 terraform plan 预览将要完成的操作,准备好创建资源后,可以通过 terraform apply 进行资源部署。

下面提供一个创建腾讯云对象存储(COS)存储桶的实际用例。

创建实例资源文件

代码语言:javascript
复制
resource "tencentcloud_cos_bucket" "mycos" {
  bucket = "mycos-1251762279"
  acl = "private"
}

resource "tencentcloud_cos_bucket_object" "myobject" {
  bucket  = tencentcloud_cos_bucket.mycos.bucket
  key = "new_object_key"
  content = "the content that you want to upload."
}

这里可以看到,上传文件至存储桶没有直接填写具体参数信息,而是引用 "tencentcloud_cos_bucket.mycos.bucket"

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

本文分享自 有文化的技术人 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com