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的感觉就是这样。

スクリーンショット 2020-10-11 15.45.55.png
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存储库关联并发布,以供使用。

私有模块的发布(配置方法)

スクリーンショット 2020-10-11 15.41.53.png
PROVIDER = tfe
NAME     = test
スクリーンショット 2020-10-11 15.44.07.png

以上是发布完成了。

召唤方法

如果存在多个版本,需要指定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的组织设置

スクリーンショット 2020-10-11 16.17.18.png
スクリーンショット 2020-10-11 16.17.26.png
スクリーンショット 2020-10-11 16.22.28.png

Terraform Cloud的工作区设置

スクリーンショット 2020-10-11 16.23.50.png
スクリーンショット 2020-10-11 16.24.11.png
スクリーンショット 2020-10-11 16.28.25.png
スクリーンショット 2020-10-11 16.30.24.png

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

スクリーンショット 2020-10-11 16.33.47.png
スクリーンショット 2020-10-11 16.34.01.png
スクリーンショット 2020-10-11 16.34.10.png
スクリーンショット 2020-10-11 16.34.24.png
スクリーンショット 2020-10-11 16.35.11.png
スクリーンショット 2020-10-11 16.35.27.png

召唤方法 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进行管理,并且只能通过一定的权限访问一样,假如认为模块也只能通过一定的权限访问,那么可以说安全级别是得到保证的。
然后可以根据使用的方便性进行利弊判断。

个人的优缺点

メリットデメリットTerraform Cloud Private ModulesApplyする環境と一体感があるPublishに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部分 – 关于在工作空间之间共享的封闭空间中使用的模块

广告
将在 10 秒后关闭
bannerAds