sysdiglabs/terraform-provider-sysdig
GitHub: sysdiglabs/terraform-provider-sysdig
Sysdig Terraform Provider 允许团队通过 Terraform 以代码方式管理 Sysdig Secure 的安全策略和监控配置。
Stars: 56 | Forks: 55
# Sysdig 的 Terraform Provider
- **[Terraform Registry - Sysdig Provider 文档](https://registry.terraform.io/providers/sysdiglabs/sysdig/latest/docs)**
- [关于如何配合 Sysdig Secure 使用此 provider 的博客](https://sysdig.com/blog/using-terraform-for-container-security-as-code/)
## 要求
- 推荐使用 [Terraform](https://www.terraform.io/downloads.html) >= 1.0(该 provider 支持 > 0.12.x)
- [Go](https://golang.org/doc/install) > [go.mod](./go.mod#L3) 中指定的 Go 版本
## 开发
首先**克隆**源代码仓库:
```
$ git clone git@github.com:draios/terraform-provider-sysdig
$ cd terraform-provider-sysdig
$ make build
```
如果你是新手,请查阅 [官方 Terraform Provider 开发指南](https://developer.hashicorp.com/terraform/plugin/framework)
### 创建新的 resource / data source
长话短说(TL;DR):
- 创建 resource / data source 项目
- 将创建的项目连同其关联配置添加到 `provider.go` 的 resource 或 datasource map 中
- 包含其[验收**测试**](#tests)
- 在 `./website/docs/` 中添加其**文档**页面
## 编译
要**编译** provider,请运行 `make build`。这将会构建 provider,并将 provider 二进制文件放在 `$(go env GOPATH)/bin` 目录中,该目录应该包含在你的 `PATH` 中。
```
$ make build
$ $GOPATH/bin/terraform-provider-sysdig
```
## 测试
为了**测试** provider,你可以直接运行 `make test` 来执行单元测试。
对于验收测试,你可以运行 `make testacc`,但请注意:
- 需要 Sysdig Monitor 和/或 Secure 的凭据,请查看 [`/.envrc.template`](https://github.com/sysdiglabs/terraform-provider-sysdig/blob/master/.envrc.template)
- **验收测试依赖于真实基础设施的创建**,你应该在一个可以轻松删除资源的环境中执行它们。
如果你是新手,请查阅 [Terraform 验收测试指南](https://developer.hashicorp.com/terraform/plugin/testing)
## 安装(本地)
要使用你刚刚构建的本地 provider,请按照以下说明在你的机器上[将其作为插件**安装**](https://www.terraform.io/docs/plugins/basics.html#installing-a-plugin):
```
$ make install
```
这会将该 provider 添加到 terraform 插件目录中。然后只需适当设置 `source` 和 `version` 的值:
```
provider "aws" {
region = my_region
}
terraform {
required_providers {
sysdig = {
source = "local/sysdiglabs/sysdig"
version = "~> 3.0.0"
}
}
}
```
卸载插件:
```
$ make uninstall
```
## 提交 PR
* 如果你是第一次提交,请确认你已考虑到 [`./github/pull_request_template`](.github/pull_request_template.md) 中的所有方面
* 在 pull request 中会强制执行一些验证。
- 定义在 [`/.pre-commit-config.yaml`](https://github.com/sysdiglabs/terraform-provider-sysdig/blob/master/.pre-commit-config.yaml) 中
- 你甚至可以在推送到远程之前使用 [**pre-commit**](https://pre-commit.com) 插件进行这些验证
* PR 标题请使用[约定式提交格式](https://www.conventionalcommits.org/en/v1.0.0/),这样当分支被压缩合并到主分支时,它也会遵循相应的约定
* 验收测试将在 [Sysdig 生产环境的 `+kubelab` 测试环境](https://github.com/sysdiglabs/terraform-provider-sysdig/blob/master/.github/workflows/ci-pull-request.yml#L82-L83)中启动
## 发布
要创建新版本,请创建并推送一个新的 **tag**,它将根据 [`/.github/workflows/release.yml`](https://github.com/sysdiglabs/terraform-provider-sysdig/blob/master/.github/workflows/release.yml) 进行发布。
* 发布前,请检查上一个 tag 与 master 分支之间的**差异**,以便发现重大更改
* 对于 **tag**,请使用 **[semver](https://semver.org)**
* 审查已发布的草稿说明,并尽量使其清晰明了。
* 在我们的内部 Slack 频道 #release-announcements 中通知 Sysdig 团队,也可以选择在 #terraform-provider 中通知。
Mange takk!

标签:ECS, EVTX分析, Go, LNA, Ruby工具, Terraform, 安全策略管理, 日志审计, 自动化运维