使用Terraform和VMware NSX自动执行防火墙规则

日期: 2023-04-25 作者:Rob Bastiaansen翻译:邹铮 来源:TechTarget中国 英文

IT管理员可以使用VMware工具自动配置NSX基础架构,但也有第三方工具可以选择:HashiCorp的Terraform工具。

与自动化 NSX 配置的其他方法(例如NSX REST API、VMware PowerCLI 或 VMware Aria Automation Orchestrator)不同,Terraform 采用基础架构即代码(IaC)方法。通过使用 Terraform,企业可以简化 NSX 基础架构管理,例如,通过使用 Terraform 文件的分布式和网关防火墙配置 NSX 平台的安全组件。

IaC工具(例如Terraform)的工作原理

使用脚本或 API 为基础结构组件创建配置通常涉及编写代码行,以定义要创建的资源。此方法起初可能完美运行,但当你再次运行脚本时,它很可能会失败,因为请求的组件已存在。

以 NSX 防火墙规则为例:如果你以管理员身份移除或更改某些规则,则进行更新并不像再次运行配置脚本那么简单。有些规则已经存在,有些规则已经改变,但具体是哪些规则呢?你可以对代码进行错误检查,以在执行之前评估环境,但在动态环境中这需要维护大量工作。

通过使用IaC,你可以在配置文件中定义基础结构的所需状态,然后使用 Terraform 等工具进行处理。这最初会创建基础架构组件,例如网关、分段、策略和防火墙规则。

到目前为止,并没有什么新鲜事物。不同之处发生在创建后应用配置文件时。在此阶段,Terraform 会评估环境并将其与配置文件中定义的所需状态进行匹配。

Terraform 会重新创建或更新任何已删除或修改的组件,以匹配所需的状态。同样,它会删除任何与所需状态不匹配的添加组件。

因此,在 IaC 方法中,配置文件成为 IT 环境的单一事实来源。这意味着管理员可以使用配置文件在灾难中还原环境,并使用相同的代码在多个环境中部署相同的配置。

使用 IaC 自动执行防火墙规则的好处

图 1 中的示例显示了安全策略的定义–放在基础结构类别“分布式防火墙”中。

图1.定义安全策略,以放置在分布式防火墙基础结构类别中。

此策略中的规则允许在整个环境中使用 DNS 流量。这是一个简单明了的示例,你可以通过多种方式进行扩展,例如仅允许访问某些 DNS 服务器或从某些源访问。

IaC 中的任何错误都会影响整个 IT 环境的运行状况,因此必须使用 GitHub 和 GitLab 等版本控制系统保护和管理配置文件。为了更好地分配这些任务,IT 团队可以根据其职责将基础结构各个部分的管理委派给各个管理员。

NSX 中的自动防火墙管理是怎样的?

为了阐明此概念并将其与 NSX 相关联,请考虑将第 3 层网关配置放在由网络团队管理的单独文件中的可能性,并将防火墙规则放在由安全团队管理的另一个文件中。通过将规则集放在单独的文件中,可以进一步划分每个团队中的职责。

此设置可能听起来令人困惑或难以管理,但它与在 NSX 用户界面中创建策略和规则并查找你负责的内容没有太大区别。现在,无需为包含规则的应用程序组创建策略,而是将该定义放在单独的文件中。

教程:了解如何使用 Terraform 在 NSX 中自动执行防火墙规则 如果你是Terraform的新手,可以从HashiCorp下载该软件。无需安装;Terraform是一个命令行实用程序,在Windows上名为terraform.exe。

1. 开始使用Terraform

理论上,你可以从使用记事本等工具创建扩展名为 .ts 的文件开始,这些文件由 Terraform 处理。但最好使用集成开发环境 (IDE) 来创建和管理文件,并简化代码格式设置、语法检查和代码验证。

有些 IDE 提供对 Terraform 的支持。本文中的示例使用 Visual Studio Code,这是一个流行的免费选项,具有 Terraform 扩展,它提供了语法突出显示和 Terraform 文件代码格式等功能。

图2.安装 Visual Studio Code 的 Terraform 扩展。

有了这些组件,现在就可以开始设置 Terraform 环境。 本教程提供了基本设置的说明;有关 NSX 提供程序的更多详细信息,请参阅 Terraform 文档

2. 下载 NSX 提供程序并设置变量文件

首先创建一个名为 providers.tf 的文件,该文件指示 Terraform 下载并使用 NSX 提供程序。

此文件还定义NSX管理器地址、用户名和密码,稍后你将从变量中检索这些信息。通常,将密码存储在文件中不是一个好主意(请继续阅读以获取更安全的解决方案),但现在,让我们从简单的示例开始。

在使用 Terraform 时,最佳做法是使用变量并将其放置在单独的文件中:包含变量定义的 variables.tf 文件和包含这些变量值的 terraform.tfvars 文件。图 3 显示了 providers.tf 文件和包含 Terraform 变量的文件。

图3.在 Terraform 中创建提供程序和变量文件。

使用此文件结构可以更轻松地维护 Terraform。扩展名为 .tf 的文件的名称与 Terraform 无关,Terraform将文件夹中扩展名为 .tf 的所有文件连接起来。但是,使用描述性名称对你和你的同事来说更清楚。

相反,terraform.tfvars 文件需要具有此特定名称。或者,你可以使用扩展名为 .auto.tfvars 的名称。但对于此示例,单个默认的 terraform.tfvars 文件就可以。

3. 初始化Terraform并定义资源

当这些文件全部就绪后,就该初始化Terraform。运行 terraform init 命令以下载和配置 NSX 提供程序,如图 4 所示。

图4.在命令行中初始化Terraform。

下一步是创建文件以定义资源。为了说明这一点,请继续使用分布式防火墙示例。将代码放在扩展名为 .tf 的文件中,并将该文件放在包含之前创建的文件的文件夹中。

4. 创建并应用防火墙策略

接下来,运行命令 terraform 规划来评估文件,并显示运行实际部署时会发生什么情况。图 5 显示了从示例文件创建防火墙策略的过程。

图5.使用 Terraform 创建 NSX 防火墙策略

如果计划与预期匹配,请使用命令 terraform apply 应用代码。这将根据需要在 NSX 环境中创建、修改或删除组件。

使用 Terraform 进行安全且可维护的防火墙管理的技巧

可以在运行时提供变量,通过不将值放在 .tfvars 文件中,而是对 terraform apply 命令使用 -input=true参数。这避免了在文件中存储密码的问题,还允许你在生产、测试和开发环境之间部署或多样化时输入服务器地址。

你还可以使用敏感标志标记 Terraform 变量,以便它们不会出现在输出中。若要在上面的示例中执行此操作,请将语法更改为以下内容。

variable “nsx_password” {

sensitive = true

}

为了便于维护,请从一开始就在单独的文件中创建单独的资源。你还可以将单独的部件存储在其自己的文件夹中,以使用 Terraform 模块机制划分访问。

 

 

 

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

翻译

邹铮
邹铮

相关推荐