{"id":20207566,"url":"https://github.com/ctfer-io/terraform-provider-ctfd","last_synced_at":"2025-04-10T12:34:14.394Z","repository":{"id":188789986,"uuid":"643915288","full_name":"ctfer-io/terraform-provider-ctfd","owner":"ctfer-io","description":"Time for CTF(d) as Code","archived":false,"fork":false,"pushed_at":"2025-04-10T06:51:40.000Z","size":403,"stargazers_count":14,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-10T07:42:52.247Z","etag":null,"topics":["ctf","ctfd","infrastructure-as-code","opentofu","provider","terraform","tofu"],"latest_commit_sha":null,"homepage":"https://registry.terraform.io/providers/ctfer-io/ctfd","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ctfer-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-22T12:23:21.000Z","updated_at":"2025-04-10T06:50:31.000Z","dependencies_parsed_at":"2023-08-16T21:58:44.091Z","dependency_job_id":"c65ff832-907f-409b-99e8-6ec0eeecfa0a","html_url":"https://github.com/ctfer-io/terraform-provider-ctfd","commit_stats":null,"previous_names":["pandatix/terraform-provider-ctfd","ctfer-io/tofu-provider-ctfd","ctfer-io/terraform-provider-ctfd"],"tags_count":24,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctfer-io%2Fterraform-provider-ctfd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctfer-io%2Fterraform-provider-ctfd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctfer-io%2Fterraform-provider-ctfd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ctfer-io%2Fterraform-provider-ctfd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ctfer-io","download_url":"https://codeload.github.com/ctfer-io/terraform-provider-ctfd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248217146,"owners_count":21066633,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ctf","ctfd","infrastructure-as-code","opentofu","provider","terraform","tofu"],"created_at":"2024-11-14T05:29:55.453Z","updated_at":"2025-04-10T12:34:14.366Z","avatar_url":"https://github.com/ctfer-io.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003ch1\u003eTerraform Provider for CTFd\u003c/h1\u003e\n    \u003cp\u003e\u003cb\u003eTime for CTF(d) as Code\u003c/b\u003e\u003cp\u003e\n    \u003ca href=\"https://pkg.go.dev/github.com/ctfer-io/terraform-provider-ctfd\"\u003e\u003cimg src=\"https://shields.io/badge/-reference-blue?logo=go\u0026style=for-the-badge\" alt=\"reference\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://goreportcard.com/report/github.com/ctfer-io/terraform-provider-ctfd\"\u003e\u003cimg src=\"https://goreportcard.com/badge/github.com/ctfer-io/terraform-provider-ctfd?style=for-the-badge\" alt=\"go report\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://coveralls.io/github/ctfer-io/terraform-provider-ctfd?branch=main\"\u003e\u003cimg src=\"https://img.shields.io/coverallsCoverage/github/ctfer-io/terraform-provider-ctfd?style=for-the-badge\" alt=\"Coverage Status\"\u003e\u003c/a\u003e\n\t\u003cbr\u003e\n\t\u003ca href=\"\"\u003e\u003cimg src=\"https://img.shields.io/github/license/ctfer-io/terraform-provider-ctfd?style=for-the-badge\" alt=\"License\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/ctfer-io/terraform-provider-ctfd/actions?query=workflow%3Aci+\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/ctfer-io/terraform-provider-ctfd/ci.yaml?style=for-the-badge\u0026label=CI\" alt=\"CI\"\u003e\u003c/a\u003e\n\t\u003ca href=\"https://github.com/ctfer-io/terraform-provider-ctfd/actions/workflows/codeql-analysis.yaml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/ctfer-io/terraform-provider-ctfd/codeql-analysis.yaml?style=for-the-badge\u0026label=CodeQL\" alt=\"CodeQL\"\u003e\u003c/a\u003e\n    \u003cbr\u003e\n    \u003ca href=\"https://securityscorecards.dev/viewer/?uri=github.com/ctfer-io/terraform-provider-ctfd\"\u003e\u003cimg src=\"https://img.shields.io/ossf-scorecard/github.com/ctfer-io/terraform-provider-ctfd?label=openssf%20scorecard\u0026style=for-the-badge\" alt=\"OpenSSF Scoreboard\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## Why creating this ?\n\nTerraform is used to manage resources that have lifecycles, configurations, to sum it up.\n\nThat is the case of CTFd: it handles challenges that could be created, modified and deleted.\nWith some work to leverage the unsteady CTFd's API, Terraform is now able to manage them as cloud resources bringing you to opportunity of **CTF as Code**.\n\nWith a paradigm-shifting vision of setting up CTFs, the Terraform Provider for CTFd avoid shitty scripts, `ctfcli` and other tools that does not solve the problem of reproductibility, ease of deployment and resiliency.\n\n## How to use it ?\n\nInstall the **Terraform Provider for CTFd** by setting the following in your `main.tf file`.\n```hcl\nterraform {\n    required_providers {\n        ctfd = {\n            source = \"registry.terraform.io/ctfer-io/ctfd\"\n        }\n    }\n}\n\nprovider \"ctfd\" {\n    url = \"https://my-ctfd.lan\"\n}\n```\n\nWe recommend setting the environment variable `CTFD_API_KEY` to enable the provider to communicate with your CTFd instance.\n\nThen, you could use a `ctfd_challenge_standard` resource to setup your CTFd challenges, with for instance the following configuration.\n```hcl\nresource \"ctfd_challenge_standard\" \"my_challenge\" {\n    name        = \"My Challenge\"\n    category    = \"Some category\"\n    description = \u003c\u003c-EOT\n        My superb description !\n\n        And it's multiline :o\n    EOT\n    state       = \"visible\"\n    value       = 500\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctfer-io%2Fterraform-provider-ctfd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fctfer-io%2Fterraform-provider-ctfd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fctfer-io%2Fterraform-provider-ctfd/lists"}