Skip to main content

Simple k8s yaml generator for CTF challenges

Project description

Different wrapping

Basically a glorified YAML converter aimed at CTFs. The goal is that tasks can be written using docker-compose, such that they can be easily quality tested. The docker-compose files are then converted to k8s manifests using kompose, organized neatly in folders by challenge type and challenge name.

Metadata files are also generated:

  • image_buildlist.json is a list of what containers need to be built
  • challenge_container_metadata.json explains what challenges have what kind of containers, so the frontend can show this to the user. It also contains information on what challenges have dynamic containers.

The intention of this tool is to run it in CI to generate metadata files to inform the rest of the platform. You can also run it locally, even just as a challenge linter. Run different_wrapping --help for more info.

Different wrapping is a component in an approach we are taking where instead of writing an elaborate system for deploying dynamic challenges, we try to re-use as much infrastructure between static and dynamic challenges as possible. We do this by creating "argocd-ready" kustomize projects - with the static project being actually hosted by argo and the dynamic ones being managed by a custom daemon.

Design goals

  • Use standard k8s manifests where practical
  • KISS

Requirements

  • Python
  • The requirements in pyproject.toml (pip install -e . to install the system and all dependencies so you can run it using python -m)
  • Kompose, if you are building yaml
    • Note that running different_wrapping lint <directory> is possible without installing kompose

Configuration

CLI

See different_wrapping --help. Here is a possible out of date output:

$ different_wrapping convert --help
INFO:different_wrapping.cli:Different wrapping starting
usage: different_wrapping convert [-h] [--dry] [--dns_host DNS_HOST] folder destdir

positional arguments:
  folder
  destdir

options:
  -h, --help           show this help message and exit
  --dry                Does not write anything to the destination directory. Note that it will write to a
                       temporary directory, in order to test out running kustomize
  --dns_host DNS_HOST
  --docker_image_repo DOCKER_IMAGE_REPO

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

different_wrapping-1.0.28.tar.gz (26.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

different_wrapping-1.0.28-py3-none-any.whl (24.8 kB view details)

Uploaded Python 3

File details

Details for the file different_wrapping-1.0.28.tar.gz.

File metadata

  • Download URL: different_wrapping-1.0.28.tar.gz
  • Upload date:
  • Size: 26.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.2

File hashes

Hashes for different_wrapping-1.0.28.tar.gz
Algorithm Hash digest
SHA256 9bf1d20b3e50cffa024e979c572a43cd74220b4ed9ea2b6c67c8e8e561ce465b
MD5 9a4d0ed84c7d4e3ca4eb9bfba6c9c9c1
BLAKE2b-256 574dd83945cd6404d7574d9a3897fd2834d83fd3b9a3cc2d5a265fb5a469db22

See more details on using hashes here.

File details

Details for the file different_wrapping-1.0.28-py3-none-any.whl.

File metadata

File hashes

Hashes for different_wrapping-1.0.28-py3-none-any.whl
Algorithm Hash digest
SHA256 0fb636c48c59752856c0c7243a0a17389eab31bb9e74defcff292af21f67bb8c
MD5 5ec0800ca0c590db5460b4a506d6aa07
BLAKE2b-256 e15c296a80c8c0a220919aebe6cba1a4b9f29b9e557fbc320965a87dace315f3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page