Is OpenIndianna a viable replacement for CentOS8, for me no

A post in my ongoing saga to find a replacement operating system for CentOS8. These posts are primarily notes I am making for myself on why I consider an OS an acceptable replacement or something I personally cannot use to replace my CentOS8 servers. That are certainly not detailed posts or even fully evaluated recomendations for anyone else… I am not fully evaluating each OS but only focusing on what I need and whether the OS provides it.

OpenIndianna is a production ready operating system, and depending upon what you want to use your servers for this is an option that should be considered as an OS; but not as a drop in replacement for CentOS8 as Oracle Linux and Debian can be (as documented in my earlier posts).

From the requirements I need, which is puppet and docker the good news is that puppet is available in the standard repositories. The bad news is that as OpenIndianna does not use a ‘Linux kernel’ docker is not available for this operating system.

Despite docker not being available OpenIndianna does of course provide Solaris Zones for application isolation, although they are fairly heavyweight compared to docker containers and of course configured completely differently and not truely isolated as the easiest way of networking a zone is to give it a public ip on your network.

Openindianna is available from the OpenIndianna download page if you are interested in giving it a try.

Also you will need to learn a completely new set of packaging tools, and a new set of system management tools (svcadm/zonecfg/zfs/zpool etc.) For example instead of “systemctl status httpd”, “systemctl enable httpd”, “systemctl start httpd”, “systemctl status httpd” you would use the below.

root@openindiana:/etc/apache2/2.4# svcs -a | grep apache2
disabled       21:38:40 svc:/network/http:apache24
root@openindiana:/etc/apache2/2.4# svcs svc:/network/http:apache24
STATE          STIME    FMRI
disabled       21:38:40 svc:/network/http:apache24
root@openindiana:/etc/apache2/2.4# svcadm enable svc:/network/http:apache24
root@openindiana:/etc/apache2/2.4# svcs svc:/network/http:apache24
STATE          STIME    FMRI
online         22:32:15 svc:/network/http:apache24
root@openindiana:/etc/apache2/2.4# 

However if you are used to creating service files for systemd you should have no trouble creating svc files for the OpenIndianna operating system.

Likewise the package management commands are different to CentOS, fortunately most are wrapped by the ‘pkg’ command. However

root@openindiana:/etc/apache2/2.4# pkg search php-pdo
INDEX      ACTION VALUE                                        PACKAGE
pkg.fmri   set    openindiana.org/web/php-56/extension/php-pdo pkg:/web/php-56/extension/php-pdo@5.6.35-2018.0.0.1
pkg.fmri   set    openindiana.org/web/php-54/extension/php-pdo pkg:/web/php-54/extension/php-pdo@5.4.45-2016.0.0.2
pkg.fmri   set    openindiana.org/web/php-55/extension/php-pdo pkg:/web/php-55/extension/php-pdo@5.5.38-2016.0.0.1
root@openindiana:/etc/apache2/2.4# pkg install php-pdo
Creating Plan (Solver setup): -
pkg install: No matching version of web/php-70/extension/php-pdo can be installed:
  Reject:  pkg://openindiana.org/web/php-70/extension/php-pdo@7.0.33-2020.0.1.5
  Reason:  This version is excluded by installed incorporation consolidation/userland/userland-incorporation@0.5.11-2020.0.1.12901
root@openindiana:/etc/apache2/2.4# 

It is a bit cleaner in a full package update in that it builds a new boot environment.

root@openindiana:/etc/apache2/2.4# pkg update
            Packages to remove:   1
           Packages to install:  10
            Packages to update: 481
       Create boot environment: Yes
Create backup boot environment:  No

DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                            492/492   16174/16174  408.9/408.9  219k/s

PHASE                                          ITEMS
Removing old actions                       6025/6025
Installing new actions                     5528/5528
Updating modified actions                16031/16031
Updating package state database                 Done 
Updating package cache                       482/482 
Updating image state                            Done 
Creating fast lookup database                   Done 

A clone of openindiana exists and has been updated and activated.
On the next boot the Boot Environment openindiana-2021:01:02 will be
mounted on '/'.  Reboot when ready to switch to this updated BE.

It should be noted that after the full update the ‘pkg install php-pdo’ command shown above did actually work. However trying to install other packages I would need proved frustrating, the package management system seems to have no equivalent of the dnf/yum behaviour of simple selecting a match for what is already installed.

root@openindiana:~# pkg install php-opcache \
>   php-intl \
>   php-common \
>   php-soap \
>   php-mbstring \
>   php-gd \
>   php-json \
>   php-fpm \
>   php-xml \
>   php \
>   php-cli \
>   php-mysqlnd \
>   php-pecl-http \
>   php-bz2 \
>   php-zip \
>   php-pclzip

pkg install: The following pattern(s) did not match any allowable packages.  Try
using a different matching pattern, or refreshing publisher information:

        php-pclzip
        php
        php-mysqlnd
        php-pecl-http
        php-xml
'php-common' matches multiple packages
        pkg://openindiana.org/web/php-73/php-common
        pkg://openindiana.org/web/php-70/php-common
'php-fpm' matches multiple packages
        pkg://openindiana.org/web/php-73/php-fpm
        pkg://openindiana.org/web/php-70/php-fpm
'php-cli' matches multiple packages
        pkg://openindiana.org/web/php-73/php-cli
        pkg://openindiana.org/web/php-70/php-cli

Please provide one of the package FMRIs listed above to the install command.
root@openindiana:~# 

So you have to manually determine what is actually installed. Incidentally the ‘pkg update’ command upgraded everything to 70 so I could assume that the 73 is only partially implemented at this point or 73 would have been installed ?.

root@openindiana:~# pkg list | grep php
web/php-70/extension/php-pdo                      7.0.33-2020.0.1.5          i--
web/php-70/php-cli                                7.0.33-2020.0.1.5          i--
web/php-70/php-common                             7.0.33-2020.0.1.5          i--
root@openindiana:~#

Also it highlights that the packages I need to move my website to an OpenIndianna server may not exist making it even less likely it is a viable alternative for me.

You will also have seen that a full package update logged messages saying a new boot environment was created to boot from. So as well as learnming new package commands you must learn new OS management commands as a result of wanting to install packages. As a side note it is interesting that a new BE has a new copy of /var as I’m not aware of any OS configuration files that live under there so just retaining the existing /var with website pages, mysql/mariadb databases, logfiles etc. would seem to me to make more sense that replicating them all in a new boot environment. But then what do I know; and this post is not on how to use OpenIndianna but on why I would find it difficult to replace a CentOS server farm with OpenIndianna.

root@openindiana:~# beadm list
BE                     Active Mountpoint Space Policy Created
openindiana            -      -          7.65M static 2020-08-27 14:14
openindiana-2021:01:02 NR     /          5.76G static 2021-01-02 03:35

root@openindiana:~# zfs list
NAME                                    USED  AVAIL  REFER  MOUNTPOINT
rpool                                  9.90G  28.4G    33K  /rpool
rpool/ROOT                             5.77G  28.4G    24K  legacy
rpool/ROOT/openindiana                 7.65M  28.4G  2.43G  /
rpool/ROOT/openindiana-2021:01:02      5.76G  28.4G  2.52G  /
rpool/ROOT/openindiana-2021:01:02/var  1.94G  28.4G   910M  /var
rpool/ROOT/openindiana/var             2.49M  28.4G   956M  /var
rpool/dump                             2.00G  28.4G  2.00G  -
rpool/export                             77K  28.4G    24K  /export
rpool/export/home                        53K  28.4G    24K  /export/home
rpool/export/home/mark                   29K  28.4G    29K  /export/home/mark
rpool/swap                             2.13G  30.5G  25.5M  -
root@openindiana:~# 

On the firewall side OpenIndianna uses “IP Filter” as the firewall solution. As such users coming from a CentOS environment where iptables and NF tables have been used (either hidden from the user behind firewalld or used manually) will have to learn a new set of commands; and rewrite any customised automated firewall deployment and checking tools used.

It should also be noted that I did previously use solaris-x86 (back in the day when SUN still owned it) and OpenIndianna and found everything I needed as far as applications/packages go compiled with the GCC compiler quite happily from source so with a little bit of work everything needed is available… apart from Docker of course that needs a Linux kernel. I also found ZFS quotas extremely useful, athough I only played with zones as they provided no great benefit to me. It most certainly is a good solution if you are looking for a ‘all-in-one’ server for you applications, not so great if you are looking for application isolation or cloud deployment.

One thing that must be mentioned is that I have found it impossible to get OpenIndianna running under OpenStack (can do through the installation procedure and install, but not boot afterward). No ‘cloud images’ are available and the repositories do not seem to contain a ‘cloud-init’ package for it either (at least a ‘pkg search’ cannot find one). It does not support as much hardware as linux distributions do so you may run into issues, although it will run under linux KVM with the issue that on a reboot the KVM instance goes into a paused state and you must issue virst reset xxx and virsh resume xxx to let the reboot continue which makes it not the ideal candidate for an OS to run under KVM. This is also unlikely to ever be possible as this operating system is simply not designed for cloud use, it is a server operating system that runs best on native bare hardware.

For me personally I have been isolating applications I use (those that do not need access to the entire system anyway) into standard containers for docker and K8 use, so the inability to use docker prevents me from using this as a replacement for CentOS8; docker has become such a part of my application deployment I have even needed to run a local registry and moving applications from containers back to local server applications seems counter-intuative to me.

So for me it is not an option as a ‘quick’ replacement for CentOS8. For anyone setting up new server environments from scratch and no intention of using containers (although zones are available) it is a good option.

A note for desktop users; I have only ever used server installs so I do not know how it behaves as a desktop, however it is a good bet that if you rely on applications from rpmfusion, copr, or even snap packages you will probably find it wanting. I would consider it a ‘server’ OS.

About mark

At work, been working on Tandems for around 30yrs (programming + sysadmin), plus AIX and Solaris sysadmin also thrown in during the last 20yrs; also about 5yrs on MVS (mainly operations and automation but also smp/e work). At home I have been using linux for decades. Programming background is commercially in TAL/COBOL/SCOBOL/C(Tandem); 370 assembler(MVS); C, perl and shell scripting in *nix; and Microsoft Macro Assembler(windows).
This entry was posted in Unix. Bookmark the permalink.