JLinux
JLinux is an operating system which makes it possible for software to have an infinite and continuous lifecycle.
The software is tested and maintained in accordance with ISO27001. Maintenance is performed automatically during each servers configured maintenance window. During this maintenance window, which can be for a second or minutes, the monitoring system automatically pauses alerts.
If an update failed, the management system is notified in real time triggering alerts.
The system automatically detect low disk space, low memory, high load, if a running service failed and many other errors. All of this in real time.
JLinux comes with multifactor authentication based on JID. This global authentication system will allow you to add authentication on any service and protocol.
The management and monitoring system is web based seamlessly integrated with the virtualisation platform JVM.
JLinux is maintained by the package manager jlinux-update which is supervised by JService.
It is possible to run updates manually on a server
To update software only:
jlinux-update update
To update software and deployments:
jlinux-update all
To check if there are pending updates:
jlinux-update check
To install a package which is not in config:
jlinux-update install <package> (optional version)
Note that if you manually install a package which is being maintained, it will be replaced during next automated maintenance if the current version does not match.
JLinux package structure
A package can contain anything from a single application to a collection of many. It is preferable to not make a
huge monolithic/static package containing every single dependency
because this will make it more time consuming to update and maintain the
system.
The folder structure of this package is as following
/usr/app/testpackage/1.0/
- bin - misc applications or non-privileged daemons. Automatically added to system path
- sbin - privileged applications and daemons. Automatically added to system path
- lib - libraries used by the applications in the package. Automatically added to LD library path.
- etc
- default template config files for the package. This folder will be
used as /etc/app/testpackage/. If service support multiple instances, it
may be used as /etc/app/testpackage/instancename/
- var - default
template data folder for the package. This folder will be used as
/var/app/testpackage/. If service support multiple instances, it may be
used as /var/app/testpackage/instancename/
- j/service - folder
with executable files, one for each supported service by the package
which can be started by jservice. The name of the file is the same as
the service name, and the parameter when executed is the path to the
config file.
- j/onupdate/service/ - folder with executable
files which if exist will be executed when a service is installed or
updated. This also include config updates.
- j/onupdate/package - executable file which will be executed when the package itself is installed or updated.
- dependencies - text file with list of jlinux packages on each line required to use this package
For software using autoconf, the above structure can easily be achieved using
#
configure --prefix=/usr/app/<NAME>/<VERSION>
--sysconfdir=/etc/app/<NAME> --localstatedir=/var/app/<NAME>
This folder structure is not required, but suggested in order to structure standard packages.
Deploying JLinux packages
Deploying new packages is easy using the jlinux-deploy tool.
jlinux-deploy <username> <password> <path to private key> <.tar.gz file or package root path> <package name> <package version> <description>
A package can be either public or private. Public means that anyone can download it, while private is filtered on servers belonging to customer / service ID.