Components

Welcome! Join us for a brief tour to learn the basics of Mio. First, Mio's file-system-centric design allows you to interact with Unix commands and provides full version control. The toolkit comes with preconfigured modules, tools, and a Makefile. You need to set up one super project per application or distribution.
Now, let's review the main components and terms.
Identity#
Our Identity is a GnuPG (short GPG) key pair. This is Mio's first core component, an unique identifier for an individual or server instance. Modern encryption and proven tools are incorporated from the beginning.
The identity consists of:
- Fingerprint: A numerical value representing the user's public key.
- Username or Primary Key ID: A string used to identify the user, often chosen by the user themselves.
- Email Address: The email address associated with the identity.
- Sub-Keys: Sub-keys for Encryption, Authentication and Signing.
- Expiration Date: A time stamp on which our identity expires.
Security comes at a price, but our mio-wizard will take care of that for you.
Super Project#
This is our workspace which consists of the configuration overlay, our identities, our secrets and the Mio-distribution itself. The state of all components are tracked in a woo manifest file.
For scripting purposes, they are exported to the activated environment as the following variables: ${MIO_SUPER}, ${MIO_OVERLAY} and ${MIO_ROOT}. Make use of them!
Configuration Overlay#
This is where the main configuration lives. It's a subdirectory inside the super project named conf. It's available for scripting purposes as ${MIO_OVERLAY}. It contains a mio.mk file that is used for module selection, as well as our project-specific module configuration files. These configurations can be overwritten or patched on a class or instance basis. Class configurations are shared across all instances, while instance configurations are applied to the instance only.
Super Project Directory Structure
Let's use the sshd module as an example.
The default configuration is located in mio/sshd/files/PORT, which sets the SSH listing port to 22.
We are patching on a class-by-class basis in the file conf/sshd/files/PORT. For our specific instance, with the hostname miodocs, the file conf/sshd/files-<HOSTNAME>/PORT.
Directory Tree
workspace
├──conf
│ ├──sshd
│ │ ├──files
│ │ │ └──PORT
│ │ └──files-miodocs
│ │ └──PORT
│ └──mio.mk
├──instances
│ └──miodocs
│ └──sshd -> ../../conf/sshd/files-miodocs
│ └──PORT
└──mio
└──sshd
└──files
└──PORT No Patches — No Maintenance
Use the module defaults to omit your module configuration (conf/<MODULE>) and let Mio handle everything.
Make#
After you bootstrap your mio project, the Makefile serves as the entry point, gluing everything together.
Secretes & Modules & Tools#
These significant subjects deserve their own sections.