Skip to content

Recipes/manifests used for services deployment on Infinite OS.

Notifications You must be signed in to change notification settings

goinfinite/os-services

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Infinite OS Services

This repository stores the installation and uninstallation manifests for all services supported by Infinite OS.

Cross-Version Support

This repository is versioned to ensure compatibility with both specific versions of Infinite OS and the manifestVersion property found in each manifest. The manifestVersion reflects the version of the individual manifest file.

Versioning for this repository is managed through branches, which act as releases. This allows users to clone only the desired branch corresponding to the required version, without the need for actual release tags:

git clone --single-branch --branch v0 https://github.com/goinfinite/os-services

Important

The versioning of this repository works differently from the Infinite OS versioning. It is important to understand that the versioning here is done through branches and not releases, and its structure also differs from the Infinite OS. The Infinite OS uses major, minor, and patch versions, whereas this repository uses only a single version level, as all changes have significant impacts on the entire services management.

Below is a mapping of repository versions and the respective Infinite OS versions and manifestVersion they support:

Repository branch (version) Infinite OS version manifestVersion
v0 v0.0.1 v0.0.2 v0.0.4 v0.0.6 v0.0.7
v0.0.9 v0.1.0 v0.1.2 v0.1.5
v1

Note

Branch versioning simplifies the control of manifests and ensures direct compatibility with Infinite OS. Branches allow accessing specific versions without additional steps, such as downloads and manual replacements, as the system uses Git for efficient operations like git fetch. See how it's done.

Manifest/Schema Properties

These manifests have their own property structure, which is read by Infinite OS during the management of these services. The supported formats are JSON (.json) and YAML (.yml, .yaml).

PHP WebServer example.

Property Type Is required? Description
manifestVersion string no The version of the manifest. This version changes whenever the manifest is updated, indicating the presence of new placeholders or new commands.
name string yes The name of the service that the manifest represents.
slugs []string no Reference names for the service, which can include full names, acronyms, or any identifier related to the service.
nature string yes The nature of the service. It can be solo or multi.

solo: services that are installed and used across Infinite OS with the same version and configuration, such as MariaDB.
multi: services installed as needed by the user, allowing different configurations and versions for each installation, such as Node.js.
type string yes The type of the service, which indicates its purpose.

application: application services with their own functionality, such as Mattermost.
runtime: services that run code and applications, such as Java.
database: self-explanatory, such as PostgreSQL.
webserver: services that host and provide access to content and applications, such as Tomcat.
mom: messaging and queuing services, such as RabbitMQ.
monitoring: self-explanatory, such as Prometheus.
logging: self-explanatory, such as Grafana.
security: self-explanatory, such as Nmap.
backup: self-explanatory, such as Bacula.
system: services related to Infinite OS itself that cannot be created, updated, or removed, such as the Infinite OS API.
description string yes A description of the service that explains what it is, what it does, and its purpose.
versions []string no The versions available for installing the service.
portBindings []string no Ports and protocols that will be bound by Infinite OS, enabling access to the service through these ports.
startCmd string yes The command responsible for starting the service after its installation.
installCmdSteps []string yes Commands to install the service. This is one of the main parts of the manifest, as it contains all the steps required to install dependencies, the service itself, and configure it. This can include editing necessary files, changing file permissions, or using Infinite OS CLI commands when needed.
uninstallCmdSteps []string no Commands to uninstall the service. These steps typically reverse the installation commands, focusing on removing files and extra configurations that will no longer function without the service.
uninstallFilePaths []string no File paths that will be deleted during the uninstallation of the service, as they are no longer needed.
stopCmdSteps []string no Commands to stop the service. These steps usually include not only halting the service but also shutting down related dependencies, such as cronjobs.
estimatedSizeBytes string no The estimated size of the service in bytes, providing clarity about the storage impact of the service.
avatarUrl string no The URL for the service’s image, used for illustration purposes.

System Placeholders

System placeholders are predefined values used by the Infinite OS to replace placeholders in installation commands. These placeholders are denoted by % at the beginning and end, such as %adminName%.

The repository will automatically substitute these placeholders with the appropriate values during the installation process. For example:

sed -i "s/goinfinite.local/%primaryHostname%/g" /usr/local/lsws/conf/httpd_config.conf

In this example, %primaryHostname% will be replaced with the primary hostname configured in Infinite OS.

Below is a table of all available system placeholders for creating manifests:

Name Type Description
randomPassword string Automatically generated password by the system, eliminating the need for manual input.
version string The version selected for installation based on the versions available in the manifest.
primaryHostname string The primary hostname configured in Infinite OS.
installableServiceAssetsDirPath string Assets directory for the service to be installed. Useful for pre-prepared configuration files ready to be used directly during installation.

About

Recipes/manifests used for services deployment on Infinite OS.

Resources

Stars

Watchers

Forks