Terraform Cloud初体验
一 前言
Hashicorp在2019年5月决定将Terraform Cloud的远程状态管理功能免费开放给开源版用户。这个版本也同时开放了更多的免费功能给不超过5人的团队使用。Terraform Cloud的功能分成免费版、团队版以及集中控制功能,本文主要对免费版功能进行介绍。
Terraform Cloud 是一个帮助团队一起使用 Terraform 的应用程序。它管理 Terraform 在一个一致和可靠的环境中运行,包括容易访问共享的状态和秘密数据,用于批准基础设施更改的访问控制,用于共享 Terraform 模块的私有注册,用于管理 Terraform 配置内容的详细策略控制,等等。
1.1 Terraform Cloud架构
1.2 Terraform Cloud优势
-
远程执行:可以运行 Terraform 命令在 Terraform 自己的基础设施中的虚拟机上远程配置基础设施。它减少了系统级故障、并行执行、状态文件中断等。
-
Terraform cloud workspace:Terraform 云使用工作空间管理基础设施集合。它就像单独的工作目录一样工作。云工作空间不仅限于状态文件,它的配置,变量、状态管理和凭证和秘密。云工作区和 CLI 工作区之间的唯一区别是,CLI 工作区只能区分状态文件。
-
远程state管理:运行远程操作时,Terraform 云会自动配置工作空间的状态。它不需要后端配置。如果存在后端配置,那么它将被覆盖。Terraform 云为状态管理提供版本控制、操作、数据共享和访问控制等功能。状态可以在 Terraform 云中的组织和工作区之间共享。
-
集成版本控制和触发:由于 Terraform 是基础设施即代码服务,它支持与一些 VCS 提供商(如 Github、Gitlab、Azure Devops 和 Bitbucket)的版本控制系统集成。Terraform 执行可以在由拉取请求合并或在 VCS 中推送的新提交时触发。它可以用作 CICD 管道。
-
CLI集成:Terraform 云远程操作可以与本地系统集成。它允许运行 Terraform 计划并将命令从本地系统自由地应用到链接的工作空间。但是在版本控制系统 (VCS) 与工作空间的集成中,您将只被允许运行 Terraform 计划,Terraform 应用命令不适用于 VCS 集成。
-
私有仓库:当需要从同一源配置提供多个环境时,当需要将该模块私有存储在 Terraform 云中时,可重用模块非常有用。在这种情况下可以使用私有注册表。私有注册表允许我们存储模块并在工作空间中使用这些模块。
-
访问控制和治理:组织中的大型团队在 Terraform 云中有许多工作区,并且最需要管理跨团队成员对这些工作区的访问,Terraform 云提供付费功能以满足大型组织的控制和治理需求。
-
保护策略&成本评估:Terraform 云提供了哨兵,这是一个策略即代码框架。它用于执行有关如何配置基础架构的细粒度策略。例如限制虚拟机的大小,将主要更新限制在定义的维护窗口等。这些策略可以作为坚定的要求,咨询警告或软要求,可以通过团队的明确批准绕过。
成本优化是 Terraform 云的独特功能。在对提供商进行更改之前,Terraform 云可以显示其总成本的估计值,以及由提议的更新引起的任何成本变化。成本优化也可以与预警策略集成。
二 账号注册
https://app.terraform.io/signup/account?utm_source=cloud_landing&utm_content=offers_tfc
三 简单示例
尝试一个示例配置
- 在终端中运行以下命令并按照提示获取 API 令牌以供 Terraform 使用。如果您没有 Terraform 0.13 或更高版本,则需要安装它 第一的
terraform login
获取登录token,填写至cli终端进行登录。
- 克隆示例仓库 .
git clone https://github.com/hashicorp/tfc-getting-started.git
- 运行设置脚本并按照提示完成设置并执行您的第一次 Terraform Cloud 运行!
cd tfc-getting-started && ./scripts/setup.sh
- state文件
四 自建组织和工作空间
创建组织,创建workspace
选择github,除了GitHub还支持GitLab,Bitbucket,Azure DevOps。
Fork 这个示例仓库到自己github:https://github.com/redhatxl/tencent-cloud-simple-example
下一步对workspace的变量进行配置。这里的变量包括以前在单机版上的环境变量,以及源代码tfvars文件中的terraform变量:
注意这里可以有选择的将一些变量标记成敏感,这样该变量的具体数值就不会在界面上显示,而其它用户甚至管理员也不能看到这个值。
变量配置完成以后,就可以通过图形界面驱动计划和实施了:
- 手动触发plan
- 测试GitHub提交PR出发
此刻terraform自动就回去执行。
五 注意事项
- 可以在workspace设置terraform的版本:
- tencent的provider需要指明source地址
provider "tencentcloud" {
secret_id = ""
secret_key = ""
region = ""
}
terraform {
required_providers {
tencentcloud = {
source = "registry.terraform.io/tencentcloudstack/tencentcloud"
}
}
}
六 其他
参考链接
- 点赞
- 收藏
- 关注作者
评论(0)