ctfer-io/terraform-provider-ctfd

GitHub: ctfer-io/terraform-provider-ctfd

一个用于CTFd平台的Terraform Provider,实现了CTF挑战和配置的代码化管理。

Stars: 19 | Forks: 3

Terraform Provider for CTFd

Time for CTF(d) as Code

reference go report Coverage Status
License CI CodeQL
OpenSSF Scoreboard

## 为什么要创建这个项目? Terraform 用于管理具有生命周期和配置的资源,简而言之就是这样。 CTFd 也是如此:它负责处理那些可以被创建、修改和删除的挑战(challenges)。 通过对不太稳定的 CTFd API 进行了一些适配工作,Terraform 现在能够像管理云资源一样管理它们,为您带来 **CTF as Code** 的机会。 凭借设置 CTF 的范式转变愿景,CTFd 的 Terraform Provider 避免了糟糕的脚本、`ctfcli` 以及其他无法解决可复现性、部署便捷性和弹性问题的工具。 ## 如何使用? 通过在 `main.tf file` 中设置以下内容来安装 **Terraform Provider for CTFd**。 ``` terraform { required_providers { ctfd = { source = "registry.terraform.io/ctfer-io/ctfd" } } } provider "ctfd" { url = "https://my-ctfd.lan" } ``` 我们建议设置环境变量 `CTFD_API_KEY`,以使 provider 能够与您的 CTFd 实例通信。 然后,您可以使用 `ctfd_challenge_standard` 资源来设置您的 CTFd 挑战,例如使用以下配置。 ``` resource "ctfd_challenge_standard" "my_challenge" { name = "My Challenge" category = "Some category" description = <<-EOT My superb description ! And it's multiline :o EOT state = "visible" value = 500 } ``` ## OpenTelemetry 支持 了解底层发生的情况或整个 CTF 生命周期中可能出现的故障仍然是一个重要问题,即使使用了此类 provider。为了提高可理解性,我们内置了 OpenTelemetry 支持。 您可以使用 [SDK 环境变量](https://opentelemetry.io/docs/specs/otel/configuration/sdk-environment-variables/)对其进行配置。 请注意,CTFd **原生不支持**此功能,您可能需要使用我们[已插桩并打包的 CTFd](https://github.com/ctfer-io/ctfd-packaged),或采取类似的方式进行自动插桩(auto-instrumentation)。 此外,该 provider 使用 `always` 采样器,因此我们建议您使用 [Collector 概率采样器](https://opentelemetry.io/docs/specs/otel/trace/tracestate-probability-sampling/)。以下是一个示例,使用了任意值。 ``` processors: probabilistic_sampler: hash_seed: 22 sampling_percentage: 22 service: pipelines: traces: receivers: [...] processors: [probabilistic_sampler, ...] exporters: [...] ``` 更完整的示例[可在此处获取](./examples/opentelemetry)。
标签:API集成, CTF as Code, CTFd, CTF平台, EC2, EVTX分析, Go语言, IaC, Terraform Provider, 可观测性, 开源, 挑战管理, 日志审计, 特权提升, 用户代理, 程序破解, 网络安全, 自动化部署, 资源管理, 隐私保护