新钛云服已累计为您分享727篇技术干货
HashiCorp Terraform 是一个IT基础架构自动化编排工具,可以用代码来管理维护 IT 资源。Terraform的命令行接口(CLI)提供一种简单机制,用于将配置文件部署到 AWS 或其他任意支持的云上,并对其进行版本控制。它编写了描述云资源拓扑的配置文件中的基础结构,例如虚拟机、存储账户和网络接口。
Terraform是一个高度可扩展的工具,通过 Provider 来支持新的基础架构。Terraform能够让您在云上轻松使用简单模板语言来定义、预览和部署云基础结构。您可以使用Terraform来创建、修改、删除ECS、VPC、RDS、SLB等多种资源。
在本文中,我们将了解如何使用 Terraform 管理现有和已创建的 AWS 安全组。基础设施革命的新时代已经开始,我们已经开始在配置管理工具(如 Ansible、Terraform、SaltStack 等)的帮助下以代码的形式配置、管理和管理我们的基础设施。
如果您是 Terraform 的新手并且想了解如何将 Terraform 与 AWS 基础知识结合使用,可以参考本文。
本文的目的
我们知道 Terraform 很强大,我们可以使用 Terraform 高效的管理或创建整个 AWS/GCP/DigitalOcean 云基础设施,但我们经常发现自己有一些额外的资源,这些资源通常是早期手动创建的,而不是由 Terraform 管理的。
将所有这些非托管资源(安全组)引入 Terraform 并使它们成为基础设施即代码。我们可以使用Terraform import
命令。
但是将这些资源一一导入是非常麻烦的。所以我们尝试使用 Ansible 将其自动化,结果就是这样。
使用 Terraform 导入
和管理现有 AWS 安全组
尽管如此,许多 DevOps 工程师仍在登录 AWS 管理控制台以手动更新安全组入站和出站流量路由,例如打开端口、启用流量路由等。这没有任何问题,但问题是您无法跟踪您的团队所做的更改除非您将其统一使用版本控制来管理。这就是 Infra as code 的优势所在。
想象一下,您将安全组作为代码,并且您所做的每项更改都在您的 Git 存储库(如 BitBucket 或 Github)中正确提交和管理。每个更改都将使用 git 日志和提交消息进行跟踪,并且还会有配置的备份,以防您想要回滚。不仅如此。
我列出了您应该将 AWS 安全组作为代码进行管理的几个原因。
它使您能够跟踪所有更改,例如打开/关闭端口以及更改的原因。
您可以使用 Commit 消息进行更好的安全审计
轻松高效的管理
使您能够进一步自动化您的基础架构
轻松找到您的公开路线并在发生任何安全事件之前进行预防
更好的业务连续性/灾难恢复策略。
单击 Jenkins 作业允许/禁止 IP/端口/组
因此,将您的 AWS 安全组作为代码来管理是非常高效的。
所以现在让我们看看我是如何设法将我现有的 AWS 安全组(所有安全组)导入 Terraform 并对其进行管理的