{"id":20447223,"url":"https://github.com/xlab-steampunk/ansible-challenge","last_synced_at":"2025-04-13T01:07:21.204Z","repository":{"id":194944909,"uuid":"690940247","full_name":"xlab-steampunk/ansible-challenge","owner":"xlab-steampunk","description":"A series of challenges for the Steampunk Ansible Challenge competition","archived":false,"fork":false,"pushed_at":"2023-12-13T14:28:17.000Z","size":45,"stargazers_count":17,"open_issues_count":0,"forks_count":10,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-26T19:01:41.412Z","etag":null,"topics":["ansible","ansible-playbook","ansible-project","ansible-role","automation","challenge","competition","hackathon","hacktoberfest","iac","iac-ansible","infrastructure-as-code","prize","prizes","spotter","steampunk","training"],"latest_commit_sha":null,"homepage":"https://steampunk.si/ansible-challenge/","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/xlab-steampunk.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-13T07:28:52.000Z","updated_at":"2025-02-25T02:56:18.000Z","dependencies_parsed_at":"2023-09-15T22:37:30.764Z","dependency_job_id":"6a79fd94-b562-4418-bfe0-9f2566351b9b","html_url":"https://github.com/xlab-steampunk/ansible-challenge","commit_stats":null,"previous_names":["xlab-steampunk/ansible-challenge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fansible-challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fansible-challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fansible-challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/xlab-steampunk%2Fansible-challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/xlab-steampunk","download_url":"https://codeload.github.com/xlab-steampunk/ansible-challenge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248650764,"owners_count":21139680,"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":["ansible","ansible-playbook","ansible-project","ansible-role","automation","challenge","competition","hackathon","hacktoberfest","iac","iac-ansible","infrastructure-as-code","prize","prizes","spotter","steampunk","training"],"created_at":"2024-11-15T10:25:15.582Z","updated_at":"2025-04-13T01:07:21.182Z","avatar_url":"https://github.com/xlab-steampunk.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Steampunk Ansible Challenge\nA series of challenges for the [Steampunk Ansible Challenge] competition.\n\n| Question |                     Key information                      |\n|----------|:--------------------------------------------------------:|\n| What     |              Ansible Challenge competition               |\n| When     |              October 12 - November 30, 2023              |\n| Who      |  Open to all Ansible enthusiasts and automation wizards  |\n| Why      |   To enhance Ansible skills and demonstrate expertise    |\n| Where    |   Register at https://steampunk.si/ansible-challenge/    |\n| Q\u0026A      | Join our [Discord] or [Reddit] community for discussions |\n\n## Table of Contents\n- [Introduction](#introduction)\n- [Instructions](#instructions)\n  - [Registration](#registration)\n  - [Timeline](#timeline)\n  - [Prerequisites](#prerequisites)\n  - [Submission](#submission)\n  - [Grading](#grading)\n  - [Prizes](#prizes)\n  - [Tips and tricks](#tips-and-tricks)\n  - [Support and Community](#support-and-community)\n- [Acknowledgement](#acknowledgment)\n\n## Introduction\n[Steampunk Ansible Challenge] is a competition created by [XLAB Steampunk].\nIt contains a series of weekly challenges where participants will have the\nopportunity to showcase their Ansible playbook expertise by tackling exciting\nand real-world automation problems.\nEach challenge is designed to focus on specific aspects of writing Ansible\ncontent, such as validation, security, best practices, etc.\nThe challenges will cover topics for Ansible beginners, as well as Ansible\nexperts.\n\nThe Steampunk Ansible Challenge presents five individual challenges,\nopen to all Ansible enthusiasts out there.\nEvery week, an email will pop into your inbox, packed with all the details for\nyou to jump into the competition. Although the new challenge will replace the\nprevious one, you can still tackle the challenges after they officially end\nand compete for the grand prize.\n\n## Instructions\nThe following section will explain the details of how the competition works:\n\n### Registration\nYou can register for the challenge at https://steampunk.si/ansible-challenge/.\nYou will receive an email confirmation and other emails will follow (e.g.,\nwhen your [Steampunk Spotter] account is created, when a new challenge is\npublished, etc.).\n\n### Timeline\nThe following dates and hours are set for the five challenges to start:\n\n- 1st challenge: October 12 at 16:00 CEST\n- 2nd challenge: October 19 at 16:00 CEST\n- 3rd challenge: October 26 at 16:00 CEST\n- 4th challenge: November 9 at 16:00 CET\n- 5th challenge: November 23 at 16:00 CET\n\nThe competition concludes on November 30 at 16:00 CET, when the grand winner\nwill be announced.\nThe solutions for challenges will be available within the `solutions` branch\nof this repository.\n\nEach challenge and its instructions will appear on time in a separate folder\nwithin this GitHub repository.\nThere is no time limit for solving each of the challenges.\n\n### Prerequisites\nTo begin, clone this repository:\n\n```shell\ngit clone git@github.com:xlab-steampunk/ansible-challenges.git\ncd ansible-challenges\n```\n\nThe submission will be done through [Steampunk Spotter].\n[Steampunk Spotter] provides an Ansible Playbook Scanning Tool that analyzes\nand offers recommendations for your Ansible Playbooks.\nTherefore, you will need to install the [Spotter CLI] to be able to submit\nyour result of the challenge.\n\nEnsure you have Python \u003e= 3.7 installed and install the [steampunk-spotter]\nPython package:\n\n```shell\npip install steampunk-spotter\n```\n\nWe suggest installing the package into a clean Python virtual environment.\nAfter that, you will need to authenticate to the [Steampunk Spotter].\nYou can generate a new API token in the user settings within the [Spotter App].\n\nAfter that you can do a persistent user login:\n\n```shell\nspotter --api-token \u003cyour-api-token\u003e login\n```\n\nTo verify that Spotter CLI works do a scan with this example playbook:\n\n```yaml\n- name: Sample playbook\n  hosts: localhost\n  tasks:\n    - name: Get the payload from the API\n      uri:\n        url: \"/some-url\"\n        method: GET\n        user: \" {{ username }}\"\n```\n\nThe CLI should output a scan result.\n\n```shell\nspotter scan playbook.yml\n```\n\nFor more comprehensive usage, issue `spotter --help` and `spotter scan --help`.\nRefer to [Spotter CLI docs]  for more detailed instructions if needed.\n\nMost challenges will require only Python and Ansible.\nAny other requirements will be explained in `README.md` of the challenge.\n\nWhen a new challenge is published you can just pull the changes.\n    \n```shell\ngit pull\ncd challenge1/\n```\n\nAnd after that, you can start solving it.\n\n## Submission\nThe submission will be done through [Steampunk Spotter].\nAfter you register for the Ansible Challenge, a new [Steampunk Spotter] \naccount with a random username is created.\nWe will also create a new Spotter organization where challenges will reside as\nprojects.\nWhen a new challenge is published a new project will be created and visible\nin the [Spotter App].\n\nNavigate to [Spotter App], set the organization to Ansible Challenge and\nfind a project with the name challenge-1, click on it and copy the project ID.\nTo submit your solution of the challenge run a new Spotter scan with the\ncorresponding project ID.\nYou will see the result of your scan in the console and in the\n[Spotter App].\n\n```shell\ncd challenge1/\nspotter scan --project-id \u003cproject-id-for-the-challenge\u003e .\n```\n\nYou can submit the challenge (do a new scan) as many times as you want.\nThe best solution (with the fewest number of errors, warnings, and hints) will\ncount.\n\n### Grading\nYour goal for each challenge is to ensure that the submitted Ansible content is\nproduction-ready and characterized by exceptional quality, reliability,\nsecurity, and trustworthiness.\nEach challenge will have a set of Spotter custom policies that will check your\nsubmitted content.\n\nYour performance will be tracked on our leaderboard (at\nhttps://steampunk.si/ansible-challenge/), where you can see how you rank\nagainst other participants.\nRanking will be done for each challenge and altogether.\n\nUsers will be ranked according to two aspects:\n\n- number of Spotter check results (errors, warnings, and hints) and\n- time taken to solve and submit the challenge from when it was published.\n\nSo, to become the Grand Winner, you must flawlessly balance precision and\nspeed across all five challenges.\nThe correctness will take precedence over time.\nLooking at the check results, any errors take precedence over warnings and \nthese over hints.\n\n### Prizes\nThe one who keeps on demonstrating your outstanding playbook writing skills\nacross all five challenges will be crowned the grand winner and receive a\nspecial prize: Meta Oculus!\nThe top three competitors of each individual challenge will receive a bag of\nSteampunk goodies.\nIf you win multiple individual challenges, you will only get the award once.\n\n### Tips and Tricks\n- Get to know [Steampunk Spotter] by going through the [Getting Started Guide].\n- Begin your Spotter journey by watching the [Spotter CLI demo video].\n- Master using Spotter by watching all [Spotter 101 videos] to gain an\n  advantage over fellow challengers.\n- Refer to the [Steampunk Ansible Documentation] to swiftly locate and explore\n  the appropriate version of the collection or module.\n- Utilize the [Spotter check catalogue] when encountering challenges in\n  resolving errors, warnings, or hints.\n- Leverage various tools and resources (e.g., [Steampunk Spotter],\n  [Ansible Lint], [KICS], [Ansible Lightspeed], [Steampunk Blog],\n  [Awesome Ansible] and others) to ensure the quality and security of your\n  Ansible content.\n- Execute [Spotter CLI] and other tools multiple times to ensure optimal\n  results.\n- Employ the `--rewrite` function with [Steampunk Spotter] and `--fix` with\n  [Ansible Lint] for automated enhancement of Ansible content.\n- Explore and use specific tips and tricks provided for each individual\n  challenge.\n\n### Support and Community\nTo get answers, tips \u0026 tricks and chat with our experts and fellow\nchallengers, join our [Discord] or [Reddit] Community.\n\n## Acknowledgment\nThe challenges were created by [XLAB Steampunk], IT automation specialists and\nleading experts in building Enterprise Ansible Collections.\n\n[Steampunk Ansible Challenge]: https://steampunk.si/ansible-challenge/\n[Discord]: https://discord.gg/xMDfHpHV\n[Reddit]: https://www.reddit.com/r/XLAB_Steampunk/\n[XLAB Steampunk]: https://steampunk.si/\n[Steampunk Spotter]: https://steampunk.si/spotter/\n[Spotter CLI]: https://gitlab.com/xlab-steampunk/steampunk-spotter-client/spotter-cli\n[steampunk-spotter]: https://pypi.org/project/steampunk-spotter/\n[Spotter CLI docs]: https://gitlab.com/xlab-steampunk/steampunk-spotter-client/spotter-cli/-/blob/main/DOCUMENTATION.md\n[Spotter App]: https://spotter.steampunk.si/\n[Getting Started Guide]: https://steampunk.si/spotter/getting-started/introduction/\n[Spotter CLI demo video]: https://www.youtube.com/watch?v=JmiKDpETY1o\n[Spotter 101 videos]: https://www.youtube.com/playlist?list=PLjFRL89L9NoPuzQwIdlKRA_Pg5oJP3GY_\n[Steampunk Ansible Documentation]: https://docs.steampunk.si/plugins/\n[Spotter check catalogue]: https://spotter.steampunk.si/check-catalogue/\n[Ansible Lint]: https://ansible.readthedocs.io/projects/lint/\n[KICS]: https://kics.io/\n[Ansible Lightspeed]: https://www.redhat.com/en/engage/ansible-lightspeed\n[Steampunk Blog]: https://steampunk.si/blog/\n[Awesome Ansible]: https://github.com/ansible-community/awesome-ansible\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlab-steampunk%2Fansible-challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxlab-steampunk%2Fansible-challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxlab-steampunk%2Fansible-challenge/lists"}