Scenario Contributor Guide for selinuxgame.org
This is a template scenario and contributor guide to create an selinuxgame.org scenario. You can see the existing scenarios as examples.
Making a Scenario
- Clone this repo.
- Write the scenario prompt, which is shown to the player when they login.
- Write the Ansible playbook to customize the environment for the player.
- Submit your scenario with items (2) and (3)
- Add the scenario to the website.
Test the Environment
After cloning, you can run vagrant up
to receive the typical base
environment. As you test your changes, whatever state the Vagrant box is in
at the end of vagrant up
is what players will receive.
Scenario Prompt
The scenario prompt is a text file that is shown to the player when they type
scenario
. At a minimum this file explains how to reproduce an issue the
fails with SELinux Enforcing and succeeds with SElinux disabled or permissive.
Specifically put your scenario content in scenario_prompt.md See that file for more information on what should go into the scenario prompt.
Ansible Playbook
The Ansible playbook configures the system such that the problem is setup for the player. Typically you install and configure some packages in a way that creates the SELinux problem of interest.
Put your Ansible content in the scenario playbooks role. For basic usage you'll be writing the role's Ansible code in this file.
Submitting your Scenario
Once your scenario prompt and Ansible playbook are tested and working, commit
your changes. Use git format-patch
to format the patch for email submission
Send the scenario patch files to bmbouter aat gmail.com or dennis.kliban aat
gmail.com.
Once accepted we will build and publish your scenario into Vagrant Cloud which delivers the box directly to a player. Once published, the last step is to list the scenario on selinuxgame.org
Add the Scenario to selinuxgame.org
To add the scenario to selinuxgame.org, open a PR against the website repository.
Specifically, you need to make a new file in the _scenarios directory.
That file must declare three fields:
- A slug, which is a shortname for the box and url. e.g. new_ways, all_my_content.
- A title: The title that goes on the Scenarios page, e.g. "New Ways".
- A description: The description that goes on the Scenarios page.
See the Scenarios page for examples of this data.
FAQ
What should I write about?
Not sure what to write? Scenarios are usually based on a real situations that have happened. Our hope is that when SELinux errors are experienced in different ways, that those can be written as a scenario for others to try to solve.
Why should I contribute?
Each scenario contributed can create a learning experience for many people. Increasing the understanding of SELinux allows for more people to contribute to a more secure world.