Basics¶
The Saltbox Sandbox repository is installed with Saltbox as part of a standard install. The Saltbox Sandbox application installers are provided and maintained by the community but are subject to approval. The applications are not part of a standard Saltbox install, but they should all be compatible with the Saltbox ecosystem. Sandbox is not a free-for-all no-rules repository but what will be accepted is a much broader range of applications which may not necessarily have anything to do with running a media server. Applications that are newly submitted or need testing will primarily land in the Sandbox repo and if relevant, stable, and maintained may end up in the Saltbox repo.
Saltbox documentation is written by community members to help others make the most of their systems.
Providing documentation for Sandbox applications is encouraged but not required.
All Saltbox applications must have documentation
Install¶
sb install sandbox
Update¶
To update Saltbox Sandbox run a standard saltbox update; Sandbox and Saltbox will both be updated
sb update
Info
Note that sb update
updates only the saltbox files themselves; it does not update any applications. You will need to follow this with an sb install <tags here>
command to update applications or installed components.
How to Install Sandbox Apps¶
For most apps it is as simple as running the sb install
command in a shell with a sandbox-
prefix followed by the name of the role.
sb install sandbox-rolename
For example, to install mkvtoolnix you would run the mkvtoolnix role:-
sb install sandbox-mkvtoolnix
Before running any role you should first carefully read through any docs to see if there are any additional steps or pre configuration settings required.
A list of all roles available to Saltbox including Sandbox can be called from the terminal via:-
sb list
Tip
Where possible the configured username/password are taken from your Saltbox accounts.yml
file located in /srv/git/saltbox/accounts.yml
and used to create a default user an password for logging in.
Requesting Sandbox Apps¶
If you have an idea for a container that you think fits into the Saltbox system but you don't feel you have the required skills to create a role, open an issue in the sandbox repo here. Take a look at some other app requests and follow the same pattern. If your suggestion catches a developer's interest, perhaps they will pick it up.
Note
Requests are just that, requests. Nobody is being paid for their work on this. Requests may not be implemented in a timely manner or at all.
The person requesting is often the best person to implement it, since that person has the interest along with knowledge of the task and the test environment. An arbitrary developer probably won't install and set up SomeRandomApp in order to fill a request for something that works alongside SomeRandomApp.
Contributing to Sandbox Apps¶
Note: If you just want to install a container into the Saltbox system without creating a role, see this article.
That work will also help you determine what you will need to do in a role, so starting there would not be wasted effort.
If you want to create a role to allow others to install your role, keep reading.
Editing an existing role¶
If you want to make a change to an existing role [for example, changing the docker image it uses], you don't have [or want to] to create a new role. You make changes like this for either core or sandbox roles using the inventory system
Preparatory work¶
Start by making your own fork of the Sandbox repo by clicking on the "Fork" button up and to the right.
This will take you to your own copy of the Sandbox repo.
On your development machine [which should probably be a machine running saltbox, as it makes things easier with regard to testing]:
clone your Sandbox fork:
git clone https://github.com/YOURNAMEHERE/Sandbox.git sandbox
go into that local sandbox dir:
cd sandbox
make sure your local repo is up-to-date:
git pull
create your feature branch:
git checkout -b my-cool-role
Creating a role¶
Now you're ready to start work on your new role.
A good starting point is to find a role that is similar to the one you want to add and use it as a starting point. For example, if your container requires mariadb and you want to create a database during setup, bookstack does that.
copy the "starting point" role to your role:
cp -R roles/bookstack roles/my-cool-role
[of course, substitute whatever role you're using as your prototype for "bookstack"]
Next step is to create the role. At a minimum, you will need to modify:
roles
└── my-cool-role
├── defaults
│ └── main.yml
└── tasks
└── main.yml
sandbox.yml
There may be other things required; there may be templates or sub-tasks or what have you. Those three files are the absolute bare minimum that would need to be created to add a new role.
What are those things?
roles/my-cool-role/defaults/main.yml
This file contains various details for your role; the docker image, the name, subdomain, that sort of thing. The stuff in there should be self-explanatory or understandable with comparisons to existing roles; if it's not, then with all respect you probably shouldn't be creating a role right now.
roles/my-cool-role/tasks/main.yml
This file drives the install of your role. The stuff in there should be self-explanatory or understandable with comparisons to existing roles; if it's not, then again, with all respect you probably shouldn't be creating a role right now.
There is a wiki article on adding new containers here; this may be of some use.
Don't forget the header in both these files:
#########################################################################
# Title: Sandbox: my-cool-role #
# Author(s): some-guy, salty #
# URL: https://github.com/saltyorg/Sandbox #
# -- #
#########################################################################
# GNU General Public License v3.0 #
#########################################################################
---
Be sure you edit this to reflect your role, name, and such depending on what's there in your prototype
sandbox.yml
This file drives the ansible install system by providing the valid tags that you can use with:
sb install sandbox-TAG
Again, it's a simple file, and it should be quite apparent what needs to be added for a new role.
Other files you may need to edit¶
defaults
└── settings.yml.default
This file provides the prototype settings file; if your role requires some new settings, add them to this file. When the sandbox repo is updated, your new settings will be added to the user's current settings file and they will be prompted to review it.
templates
└── my-cool-role.j2
Perhaps you need to create a config file, or a service file, or the like. Create templates for them here and fill them in at install time. THere are lots of examples in the existing roles.
Testing¶
Warning
BE SURE TO TEST YOUR ROLE.
You want to make sure that your role works, so be sure you run it several times. Run it on fresh installs, reinstalls, enlist someone else to run it for you. The point of doing this is to add something to sandbox for others to use; if you don't verify that it works, why are you doing it?
Creating the Pull Request¶
Now it's complete, and tested, and you want it to be added to sandbox for other users to enjoy.
First, commit your changes to your fork.
Warning
BE SURE YOU DO NOT COMMIT FILES CONTAINING SECRETS LIKE API KEYS OR TOKENS.
This will involve adding the files you changed or added and doing a git commit and git push.
This is standard git stuff, and again, with all respect, if you don't know these git basics you probably shouldn't be creating a role right now.
Back at github.com, create a pull request against the "master" branch of the sandbox repo.
You do this by switching to your feature branch in your repo and clicking "Pull request" at the top where it says something like: "This branch is 2 commits ahead of sandbox:master."
This is a request for the Saltbox team to "pull" your changes into their repo.
If there are special instructions or details that your role needs, add them to the pull request comments. If needed, create a doc page [which will be its own pull request] for the role.
Warning
BE SURE YOU DO NOT COMMIT FILES CONTAINING SECRETS LIKE API KEYS OR TOKENS.
Your pull request will be reviewed eventually, and may generate comments or change requests.
You can address those change requests by making further commits to your feature branch; they will automatically be added to this pull request.
Eventually, if deemed a good or just reasonable fit, your pull request will be accepted and it will appear in the source sandbox repo.