Terraform Cloud第4章-有关在共享封闭空间内使用的工作区间的模块的说明
首先,老师问孩子为什么迟到了。
首先,”模块”是什么意思?
Terraform具备一种名为模块(Module)的功能,可将共同处理流程化。在使用该模块时,如果它配置在可参考的目录中,可以通过source变量指定目录来传递参数。但在想要在其他项目中使用相同模块时,会令人感到困惑。这种情况下,可以通过在可从执行环境引用的位置,如WEB或SSH协议中放置模块来使每个执行环境都能使用共同的模块。但是,如果要公开模块,则无需担心访问权限。然而,在业务使用中,通常会包含只能由特定用户使用的模块的要求。本文将介绍在Terraform Cloud的使用角度上如何配置限制访问的模块。
在本文中实现
Terraform Cloud Private Moduleの設定
VCSのPrivate Moduleを利用したModuleの利用
这篇文章的目标读者群
读者群体
-
- Terraform Cloudに興味がある人
- Terraform CloudのModuleの共有の仕方に興味がある人
必需的技能
- 多少のTerraform CloudとVCSの知識
“前提的设定” de
VCS的感觉就是这样。

variable "organization_name" {
type = string
default = "kuroseets"
}
variable "workspace_name" {
type = string
default = ""
}
variable "operations" {
type = bool
default = false
}
resource "tfe_workspace" "this" {
name = var.workspace_name
organization = var.organization_name
operations = var.operations
}
云上地貌建模系统
介绍功能
在Terraform Cloud中,有一个功能叫做Private Modules,可以在帐户内进行重复使用,这个功能是为了在Terraform Cloud的组织中,仅供与之相关联的成员引用的封闭环境中使用的。
类似于将版本控制系统(VCS)的存储库和分支与Workspace关联并应用一样,通过Module设置将VCS存储库关联并发布,以供使用。
私有模块的发布(配置方法)

PROVIDER = tfe
NAME = test

以上是发布完成了。
召唤方法
如果存在多个版本,需要指定version变量。変数source将变为///。
module "create_workspace" {
source = "app.terraform.io/kuroseets/test/tfe"
version = "0.0.2"
workspace_name = "test-ws"
}
使用VSC的私有存储库中的模块
产品介绍
另一种方法是直接使用VCS的私有存储库,而不在Terraform Cloud中发布。
如果是公共存储库,可以无需考虑访问权限直接使用,但通过使用私有存储库可以限制可以使用的用户。
在使用私有存储库时,需要在Terraform Cloud中使用SSH密钥设置私钥。如果与之相对应的公钥已在VCS中导入,则可以访问存储库。
如何进行设置
创建SSH密钥
在某个终端环境下生成一个SSH密钥。
ssh-keygen -t rsa -m PEM
Terraform Cloud的组织设置



Terraform Cloud的工作区设置




在VCS(版本控制系统)中设置公钥(本例中为GitHUB)。






召唤方法 fǎ)
在指定git克隆的源变量中,需要提供字符串。
module "create_workspace" {
source = "git@github.com:kuroseets/terraform-tfe-test.git"
workspace_name = "test-ws"
}
如果要指定版本,请使用ref而不是version变量,如下所示。
source = "git@github.com:kuroseets/terraform-tfe-test.git?ref=v0.0.2"
对两方进行比较后的个人感受。
在私有模块和版本控制系统(VCS)的私有仓库中使用SSH密钥的模块进行比较时,最令人担忧的问题应该是安全性。
如果在Terraform Cloud中实施,我认为可以肯定地说,这是在SaaS中保证只有特定成员可以访问。
另一方面,如果使用VCS,则访问权限管理将依赖于VCS,可能会显得冗余,并且可能看起来安全性有问题。但是,很难想象在使用私有模块的情况下,工作空间没有使用VCS。
总之,就像除了Terraform模块之外的其他代码也通过VCS进行管理,并且只能通过一定的权限访问一样,假如认为模块也只能通过一定的权限访问,那么可以说安全级别是得到保证的。
然后可以根据使用的方便性进行利弊判断。
个人的优缺点
owners
権限が必要Repositoryのtag付必須
Repositoryに一定の命名規則Private RepositoryをModuleとして参照Terraform Cloudから切り離せるSSH鍵を管理する必要がある
source変数の書き方が残念
我尝试了一下,但两种都可以吧。
如果像Terraform Cloud Free那样在一定规模范围内分割Organization使用,我觉得无需过多担心,可以随心所欲地使用。
相反,如果Terraform Cloud Team & Governance以上的Organization变得很庞大,需要在同一地点使用多个项目、不同成员具有不同权限等各种条件不同的情况下,我觉得应用于整体的Private Modules可能会成为负担,导致运行变得缓慢。
在这种情况下,我觉得横跨使用的部分可以使用Private Modules,用于每个项目范围的部分可以通过项目范围的VCS Private Repository实施,具有浏览权限。
我写这篇文章的原因
以上是原文。
這次我寫這篇文章的原因是,在Terraform-jp的Slack裡討論到Terraform Cloud時,我感到有意外地很少人使用Private Modules。
如果有人有「這樣做的方式」的意見,我希望能請教一下。
谢谢您这次的支持。
请参阅页面
相关文章
Terraform Cloud 第1部分 – 从本地执行转变为远程执行
Terraform Cloud 第2部分 – 尝试与GitHub进行协作(设置版本控制系统和工作目录)
Terraform Cloud 第3部分 – 使用Terraform来管理Terraform Cloud
Terraform Cloud 第4部分 – 关于在工作空间之间共享的封闭空间中使用的模块