首页 > 其他分享 >Terraform 团队协作以及状态文件 (9)

Terraform 团队协作以及状态文件 (9)

时间:2023-09-10 16:31:45浏览次数:73  
标签:状态 terraform Terraform 协作 文件 workspace new 团队

Terraform 状态文件

在默认情况下,Terraform 将状态文件 terraform.tfstate存储在本地。

如果一个人使用 Terraform 的话是可以的,如果是团队维护的话,就不太合适了。因为团队中的每一个成员都有可能执行 Terraform,所以每个人都有可能产生自己的状态文件。如何能够同步状态文件,并且让它们能够保持一致,将成为团队成员维护的额外负担。

Terraform 通过支持远程状态从而解决团队成员协作的使用 Terraform 的状态文件的问题。



Terraform 远端状态

Terraform 远端状态以及将 Terraform 所产生的基础设施资源的状态数据写入到远端的存储中,Terraform 支持很多远端存储类型,包括 Terraform Cloud,AWS S3,ETCD等。其中 Terraform Cloud 不仅提供免费的远端状态存储,而且配置和使用都比较简单。


Terraform Cloud 创建和设置

  1. 创建组织

注册 Terraform Cloud 之后,先创建一个组织。

Terraform 团队协作以及状态文件 (9)_terraform cloud


  1. 输入组织名字,名字必须唯一
  2. 创建工具区

Terraform 团队协作以及状态文件 (9)_terraform cloud_02


  1. 输入工作区的名称

Terraform 团队协作以及状态文件 (9)_terraform_03


  1. 设置执行模式为local

执行 terraform 命令的地方是在本地执行,而不是在 terraform cloud 上执行。

设置之后 Terraform 只用于存储和同步远端状态

Terraform 团队协作以及状态文件 (9)_terraform_04



Terraform Cloud 存储状态文件

配置 Terraform 后端,以便把状态文件存储到远端。

把 Terraform 状态文件存储到 Terraform Cloud 上,团队的每个成员都能共享该状态文件。


  1. 创建 backends.tf 文件
terraform {
  backend "remote" {
    hostname = "app.terraform.io"       // 域名
    organization = "terraform-wsj"      // 组织

    workspaces {                        // 工作区
      name = "tfdemo"       
    }
  }
}


  1. 创建token

Terraform 团队协作以及状态文件 (9)_terraform_05


  1. 复制令牌内容备用

Terraform 团队协作以及状态文件 (9)_terraform wprkspace_06


  1. 创建 terraformrc 文件

将令牌内容写到 token 里面。

 touch ~/.terraformrc 
 vim ~/.terraformrc
 
 credentials "app.terraform.io" {
  token = "9dgzJqU************MJH3D0II"	
}


  1. 初始化项目
% terraform init

Initializing the backend...

Successfully configured the backend "remote"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing modules...

Initializing provider plugins...
- Reusing previous version of hashicorp/aws from the dependency lock file
- Using previously-installed hashicorp/aws v5.14.0

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.


  1. apply 代码,状态文件会存储到 TF Cloud 上
terraform plan
terraform apply


  1. 查看 TF Cloud

Terraform 团队协作以及状态文件 (9)_terraform wprkspace_07



状态锁

在执行 terraform apply 的时候会

% terraform apply
Acquiring state lock. This may take a few moments...
....

Terraform 在执行命令之前会检查状态锁,看是否有别人在使用状态,若没有人使用才会继续往下执行,当命令执行完成之后才会释放状态锁。

状态锁的好处是可以阻止多人在同一时刻同时执行Terraform,避免出现错误。


Terraform 上也可以看到状态锁的相关信息。在右边可以设置锁定状态文件。

Terraform 团队协作以及状态文件 (9)_terraform wprkspace_08

Terraform 团队协作以及状态文件 (9)_terraform_09


建议锁定状态文件,有需要更新的时候再进行开启。



Terraform 工作区

通过 Terraform 工作区可以创建互相隔离的工作环境,这是由于 Terraform 将状态文件于工作区绑定在一起的缘故。

不同的工作区有不同的状态文件,在真实的工作环境中:开发环境,测试环境,生产环境的基础设施状态可能都将不同,在同一个 Terraform 代码的当前目录,很难满足多个环境的要求。为此 Terraform 提供工作区机制,解决多环境问题。当我们准备 Terraform Cloud 时,我们创建工作区管理状态文件。

Terraform 提供了 workspace 子命令用来执行有关工作区的出操作。


Terraform workspace 使用说明

terraform workspace delete 删除工作区
terraform workspace list  列出工作空间
terraform workspace new   创建新的工作空间
terraform workspace select  选择工作空间
terraform workspace show   显示当前工作区的名称


创建工作区

之前的代码可能不支持 workspace。这里新建一个目录来使用workspace。


  1. 新建目录
 % mkdir workspace
 % cd workspace 


  1. 新建工作区
% terraform workspace new new
Created and switched to workspace "new"!

You're now on a new, empty workspace. Workspaces isolate their state,
so if you run "terraform plan" Terraform will not see any existing state
for this configuration.


  1. 查看工作区
% terraform workspace list   
  default
* new


  1. 切换工作区
 % terraform workspace  select default
Switched to workspace "default".

 % terraform workspace list           
* default
  new


  1. 删除工作区
% terraform workspace delete new
Deleted workspace "new"!

% terraform workspace list      
* default




标签:状态,terraform,Terraform,协作,文件,workspace,new,团队
From: https://blog.51cto.com/u_11060853/7426885

相关文章

  • 如何尽快了解企业文化并融入团队
    每个公司都有自己独特的企业文化,企业文化分为两个部分,一个部分是对外的企业文化,一个部分是企业内部的文化。对外的是公司的形象,企业的名片,对外的宣传,对外的部分叫做企业文化。对内的部分是企业内部的工作环境、工作氛围、工作流程和潜规则,这个叫做团队文化。1、了解企业文化对外的......
  • 提升 Markdown 文档协作:Let's Markdown介绍与部署
    在当今数字化的世界中,我们经常需要分享文本和文档。Markdown是一种流行的轻量级标记语言,用于格式化文本和创建文档。但是,有时在不同的平台和编辑器之间共享和处理Markdown文档可能会带来一些麻烦。为了解决这些问题,诞生了Let'sMarkdown。GitHub地址:https://github.com/Cveinnt......
  • 咪蒙团队转型做短剧行业,年收入近2个亿
    我是卢松松,点点上面的头像,欢迎关注我哦!很多人不知道咪蒙是谁,他曾经是公众号时代的no.1,她发一篇带广告的推文大几十万,那个时候不知道带动多少人去做公众号,2019年发表不恰当文章而被封禁。但最近我看到一则新闻:说咪蒙正在转向短视频领域,制作短剧,年收入近2个亿。例如,姜十七共更新了......
  • Terraform 模块重用资源 (8)
    模块重用资源介绍Terraform模块可以简化代码,减少代码重复的内容。使用Terraform模块可以重用基础设施资源。在Terraform本身看来模块只不过是一个或多个资源的容器。通过Terraform的模块机制,对想要重用的资源进行封装,即可在别处像函数一样方便的调用。模块代码结构通过调用......
  • Vercel 与 Next.js:开源全明星团队背后的商业逻辑
    Vercel与Next.js:开源全明星团队背后的商业逻辑aryu2022-01-2610:183616 视频版本推荐同步观看,喜欢请一键三连~#Vercel与Next.js:开源全明星团队背后的商业逻辑|MonetizingOpenSource引子Vercel是由GuillermoRauch创立的云服务公司,以拥有数个知名开源项目......
  • WorkPlus——高效私有化办公平台,实现即时协作与信息安全的完美结合
    在当今数字化时代,办公效率已成为企业追求发展的重要标准之一。为了满足企业对内部信息流畅传递的需求,私有化部署的即时通讯软件成为了不可忽视的核心工具。WorkPlus作为一款功能强大的办公平台,为企业打造了一个支持局域网的自主控制办公环境,提供了即时通讯、文件共享、视频会议等丰......
  • Terraform 通过 Provisioner 配置服务器 (7)
    Provisioner介绍当虚拟服务器创建完成后,通常需要执行一些初始化的操作。例如:安装软件,配置系统,服务等。在前面的案例中使用云商的user_data用户数据来执行shell脚本来安装nginx服务器。Terraform也提供了Provisioner来完成这种场景。通过Provisioner可以在基础设施资源......
  • 文盘Rust——起手式,CLI程序 | 京东云技术团队
    技术的学习从不会到会的过程是最有意思的,也是体会最多的。一旦熟练了,知识变成了常识,可能就失去了记录学习过程的最佳时机。在我看来学习一门计算机语言和学习人类语言有很多共通之处。我们学习人类语言是从单个的词开始,然后是简单句子,通过不断的与他人交互练习掌握语法和语言习惯。......
  • 弹性数据库连接池探活策略调研(二)——Druid | 京东云技术团队
    前言在上一篇文章中,我们介绍了弹性数据库连接失效的背景,并探讨了HikariCP连接池探活策略的相关内容。在本文中,我们将会继续探讨另一个线上常用的连接池——Druid,并为您介绍如何在使用Druid时实现最佳实践的弹性数据库连接池探活策略。DruidDruid的版本迭代更新比较快,同时探活配置的......
  • 中小团队主流4种缺陷管理工具
    随着软件开发项目越来越庞大和复杂,缺陷管理成为了软件质量保证中不可或缺的一环。一个有效的缺陷管理工具不仅能帮助团队更有效地跟踪和解决问题,还能提高整体的开发效率。本文将从多个角度为您提供缺陷管理工具的选型指南。一、为什么缺陷管理如此重要?在软件开发和测试的全过程......