This is a self contained classroom environment, containing a few helper scripts and a control repository codebase of Puppet code. Each spawned codespace runs containers that serve the roles of an OpenVox infrastructure.
| Container | What it is |
|---|---|
openvox-server |
OpenVox server and CA, server.example.com |
agent-alma |
AlmaLinux 10 target, alma.example.com |
agent-ubuntu |
Ubuntu 26.04 target, ubuntu.example.com |
Important
This environment requires an active GitHub account. If needed, create a free
account using the Sign up button in the top right and then return to this repository.
- Open https://github.com/overlookinfra/classroom on GitHub.
- Click the green Code button, then the Codespaces tab.
- Click the green button or the plus icon to create a codespace on
main. - It will ask you to confirm trust. Click Trust Folder & Continue.
The codespace builds itself and starts the lab. Note that the VS Code window opens and will likely a terminal before it is actually done setting everything up. Just give it time to finish.
Eventually, it will show a terminal while it runs the postCreateCommand. Wait
for this to finish before checking the status of the lab with bin/status in
the terminal window. This may take several minutes.
bin/alma puppet agent -t # run the agent on the Alma node
bin/alma {command} # run a command on the Alma node
bin/alma # shell into the AlmaLinux target
bin/ubuntu puppet agent -t # run the agent on the Ubuntu node
bin/ubuntu {command} # run a command on the Ubuntu node
bin/ubuntu # shell into the Ubuntu target
bin/status # container statuses, CA, agent certs
bin/deploy # deploy modules from the Forge to the classroom infrastructure
# Not commonly used
bin/server puppetserver ca list --all # list certificates on the server
bin/server {command} # run a command on the server node
bin/server # shell into the server
bin/server --root # shell into the server as root, for installing tools
bin/agent-regen {node} # revoke and regenerate the agent's certExercises to go along with the OpenVox Essentials training are contained in the /exercises folder. Please note that these exercises were designed to be completed in a very short timeframe, so they're quite simple. You're not restricted to only these exercises. Please feel free to explore and experiment as you see fit.
Important
If you find the editor not behaving as you'd expect, try turning off ad blockers and try again.
- Explore the resource abstraction layer
- Find modules on the Forge
- Designing a profile class
- Classifying nodes
- Profile Parameters in Hiera
- Edit Puppet code
- Manipulating information
Codespaces work by starting an environment made up of ephemeral nodes running in the cloud and then cloning this repository onto the running node. This means that any code changes will be lost when the environment is deleted unless you save them to their own repository.
- In the Activity Bar to the left, click the Source Control view.
- Use the ➕ icons to add everything you want to save to the changeset.
- Type a commit message and then click Commit.
- Note that this only commits to the local git repository. It's still only ephemeral.
- Now save it to a repository in your own github namespace with the Publish Branch button.
- Type a name for your new repository and select either the
publicorprivateoption.
- Type a name for your new repository and select either the
See https://docs.github.com/en/codespaces/quickstart#committing-and-pushing-your-changes for more detailed information.
Now you own this Codespace and can run it and experiment at any time. Being container-based, we do not guarantee that it will always behave exactly like real nodes, but it should be reasonably close. At the time of writing, GitHub includes 120 monthly hours of Codespace runtime with the free tier.