ctfer-io/terraform-provider-ctfd
GitHub: ctfer-io/terraform-provider-ctfd
一个用于CTFd平台的Terraform Provider,实现了CTF挑战和配置的代码化管理。
Stars: 19 | Forks: 3
## 为什么要创建这个项目?
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, 可观测性, 开源, 挑战管理, 日志审计, 特权提升, 用户代理, 程序破解, 网络安全, 自动化部署, 资源管理, 隐私保护