OmniCube: Guide d'installation et de configuration
EFit-partners
Mars 2026
Chapter 1
Installation d'OmniOS
1.1 Nouvelle installation
Le système de virtualisation OmniCube est basé sur le système d'exploitation OmniOS lui-même dérivé de Solaris. L'installation d'OmniCube commence donc par l'installation d'OmniOS telle que vous pouvez la retrouver sur site même d'OmniOS (https://omnios.org/setup/freshinstall.html)
Pour effectuer cette installation, il est possible d'utiliser un CD bootable, une clé USB ou PXE. Les images pour ces formats sont disponibles sur la page de téléchargements https://omnios.org/download.html.
Les informations ci-dessous concernent l'installation de la version r151054. L'installation d'une version LTS ultérieure peut légèrement différer sans toutefois présenter de différence rédhibitoire pour l'utilisateur.
OmniOS est un système d'exploitation dédié à la virtualisation qui nécessite la configuration minimale suivante:
- Architecture 64 bits (x86-64)
- Taille de la mémoire 1 Gio (minimum)
- Disque dur 8 Gio (minimum)
A celle-ci s'ajoutent les besoins des machines virtuelles hébergées.
1.2 Démarrage à partir de l'image
Lors du démarrage à partir d'un CD, d'une clé USB ou d'un PXE, le programme d'installation d'OmniOS affiche plusieurs options dont l'installation est celle par défaut. Pour procéder à l'installation, il suffit donc d'appuyer sur la touche return ou de laisser s'écouler le temps nécessaire pour que l'installation se poursuive.
Figure 1.1: Écran du loader
Une fois le programme d'installation démarré, il est possible d'utiliser l'ancien programme d'installation en mode texte en appuyant sur T dans les 10 secondes. Si l'on presse la touche return ou si le délai expire, le programme d'installation par défaut en mode dialogue sera lancé.
Figure 1.2: Selection de l'installer
Sélectionnez la disposition de clavier souhaitée dans le menu affiché. Les touches fléchées permettent de se déplacer vers le haut et vers le bas, ou la première lettre de la sélection souhaitée permet de passer aux entrées commençant par cette lettre; appuyez plusieurs fois pour faire défiler les dispositions commençant par la même lettre. Une fois votre choix effectué, appuyez sur return pour continuer.
Figure 1.3: Selection du type de clavier
Après avoir sélectionné la disposition du clavier, le menu d'installation de niveau supérieur s'affiche. Cela offre plusieurs options, mais pour une installation simple sur un disque dur vierge, sélectionnez l'option en surbrillance Find disks, create rpool, and install OmniOS et appuyez sur return.
Figure 1.4: Install, shell ou reboot
L'écran suivant affiche la liste des disques durs détectés par le système. Sélectionnez les disques à utiliser pour l'installation en vous déplaçant vers le haut et vers le bas à l'aide des touches fléchées et en appuyant sur la barre d'espace pour cocher la case en regard de chaque élément. Une fois terminé, appuyez sur return pour continuer.
Si plusieurs disques sont sélectionnés et en fonction de leur nombre, l'écran suivant vous invitera à choisir le niveau RAID souhaité pour le zpool d'installation.
Figure 1.5: Sélection des disques
Ensuite, si plusieurs disques ont été sélectionnés, choisissez le type de configuration RAID souhaité pour le pool racine. Les options affichées ici dépendront du nombre de disques sélectionnés à l'étape précédente.
[b]0.49

RAID 4 disques
[b]0.49

RAID 2 disques
Sélection RAID
Ceci fait, la configuration du rpool s'affiche proposant d'éventuellement changer son nom, le schéma de partitionnement (UEFI), la compression ou la taille des secteurs.
Figure 1.6: Configuratnio du rpool
Entrez un nom d'hôte pour le nouveau système, puis appuyez sur return.
Figure 1.7: Choix du hostname
Pour sélectionner un fuseau horaire, choisissez d'abord un continent ou un océan dans le menu affiché, puis sélectionnez une région et enfin le fuseau horaire souhaité. Si vous souhaitez entrer directement une chaîne de fuseau horaire POSIX, sélectionnez la dernière option affichée (none) ou, si vous souhaitez utiliser UTC, choisissez directement cette option.
Il est important de noter ici que, si la fonctionnalité de snapshot automatique de l'OmniCube est utilisée, le fuseau horaire doit être UTC. Dans le cas contraire, lors du passage de l'heure d'été à l'heure d'hiver,
des snapshots seront perdus. De plus, si une infrastructure couvre plusieurs fuseaux horaires, il est plus simple que les snapshots pris à intervalles réguliers aient une nomenclature cohérente entre les sites.
[b]0.49

[b]0.49

Choix du fuseau horaire
Le programme d'installation commence alors à installer l'image du système d'exploitation sur le zpool et affiche la progression à l'écran.
Figure 1.8: Barre de progression ZFS
Une fois l'écriture sur le zpool terminée, le programme d'installation affiche des informations sur l'état actuel du système qui a maintenant le rpool monté, prêt à être configuré. Appuyez sur return pour continuer.
Figure 1.9: Installation complète
Le menu post-installation offre la possibilité de configurer certains paramètres système de base avant le premier démarrage, ainsi que des options pour redémarrer ou arrêter le système.
Figure 1.10: Post-installation
Figure 1.11: Post-configuration
La sélection de la première option affiche un menu permettant de configurer certains paramètres système initiaux tels que l'adresse IP et les mots de passe.
Une configuration réseau simple peut être effectuée via le menu présenté. Toutefois, dans le cadre d'une installation d'OmniCube dont l'utilisation réclame en général disponibilité et sécurité, il est recommandé de configurer un agrégat LACP et des VLANs. Ce genre de configuration plus sophistiquée se fait en ligne de commande, comme nous le verrons par la suite.
Figure 1.12: Configuration réseau
Pour l'installation d'OmniCube, il est recommandé de:
- créer un utilisateur d'administration;
- définir un mot de passe pour root et
- activer le serveur SSH.
OmniOS est livré avec deux méthodes différentes pour l'élévation des privilèges. pfexec est la norme Solaris/OmniOS/Illumos qui utilise des profils pour spécifier les privilèges, mais sudo, bien que déconseillé, est également inclus et pris en charge. Lors de la création de l'utilisateur il est conseillé de lui attribuer le rôle Administrateur principal qui lui permet d'accéder au compte root via pfexec.
[b]0.32

[b]0.32

[b]0.32

Création d'un
user
Une fois terminé, la clé USB ou le CD peut être retiré et le système peut être redémarré via le menu.
L'écran de démarrage qui s'affiche à partir du disque dur est presque identique à celui du CD ou de la clé USB. Vous pouvez appuyer sur return ou attendre la fin du délai pour démarrer le système d'exploitation.
Figure 1.13: Premier boot
Au premier démarrage, la base de données des manifestes des services est créée et un compte à rebours s'affiche. Les démarrages suivants seront beaucoup plus rapides.
Sauf configuration explicite dans le menu de configuration post-installation, le mot de passe de l'utilisateur root sera vide (appuyez simplement sur return). L'installation est terminée et root est connecté.
1.3 Configuration réseau avancée
Chapter 2
Mise à jour du système
2.1 Packaging
2.1.1 Dépôts IPS
OmniOS adopte une approche par couches pour le packaging. En plus du logiciel assez minimaliste fourni avec le système d'exploitation de base, des packages supplémentaires sont fournis via des dépôts supplémentaires. Il existe un dépôt supplémentaire géré par l'OmniOS Association et plusieurs autres gérés par des tiers dont celui d'OmniCube.
Une installation de base d'OmniOS présente ses dépôts comme suit:
root@omnicube:~# pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F https://pkg.omnios.org/r151054/core/
omnios mirror online F https://us-west.mirror.omnios.org/r151054/core/
extra.omnios origin online F https://pkg.omnios.org/r151054/extra/
extra.omnios mirror online F https://us-west.mirror.omnios.org/r151054/extra/
OmniCube
Comme tous les éléments de l'OmniCube sont packagés, pour pouvoir l'installer, il suffit d'ajouter son dépôt aux serveurs:
~# pkg set-publisher -m https://omnios.efit-partners.eu/r151054/ omnicube
La configuration de publishers est alors la suivante:
user@server:~$ pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F https://pkg.omnios.org/r151054/core/
extra.omnios origin online F https://pkg.omnios.org/r151054/extra/
omnicube origin online F https://omnios.efit-partners.eu/r151054/
Dépôt OmniCube LTS
Les versions paires d'OmniOS sont stables et les versions impaires sont instables (bloody). Une version stable sur quatre est une version de support à long terme (LTS). Les versions LTS bénéficient d'un support pendant trois ans.
Bien que l'utilisation des dépôts OmniOS soit parfaitement compatible avec l'OmniCube, l'utilisation de versions LTS est recommandée pour leur stabilité dans le temps.
Cependant, comme tout logiciel libre, OmniOS est en constante évolution ce qui signifie qu'une version installée sur un nouveau serveur pourrait diverger des précédentes. Pour permettre une homogénéité des versions à travers de tous les nodes d'un OmniCube, il est possible d'utiliser les dépôts proposant toutes les différentes versions des LTS, actuellement sans limite dans le temps.
Pour ce faire, il suffit de remplacer les dépôts d'OmniOS comme suit:
user@server:~# pfexec su -
root@server:~# pkg unset-publisher omnios
PHASE ITEMS
Updating package cache 1/1
root@server:~# pkg unset-publisher extra.omnios
PHASE ITEMS
Updating package cache 1/1
root@server:~# pkg publisher
PUBLISHER TYPE STATUS P LOCATION
root@server:~# pkg set-publisher -r -O https://pkg.omnicube.org/r151054bj/ omnios
root@server:~# pkg set-publisher -r -O https://pkg.omnicube.org/r151054bj/ extra.omnios
root@server:~$ pkg set-publisher -r -O https://pkgdev.efit-partners.eu/r151054/ efit-partners
root@server:~$ pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F https://pkg.omnicube.org/r151054bj/
extra.omnios origin online F https://pkg.omnicube.org/r151054bj/
efit-partners origin online F https://pkgdev.efit-partners.eu/r151054/
2.2 Patching d'OmniOS
2.2.1 Mettre à jour tous les packages
La première chose à faire après avoir installé OmniOS est de s'assurer que tous les paquets sont à jour. Les paquets dans OmniOS sont gérés à l'aide de l'utilitaire de ligne de commande pkg.
Commencez par vous assurer que la liste des paquets disponibles est à jour
~$ pfexec pkg refresh
Actualisation du catalogue 1/1 omnios
et affichez les mises à jour disponibles (aucun privilège requis)
~$ pkg list -u
NOM (ÉDITEUR) VERSION IFO
archiver/gnu-tar 1.29-0.151024 i--
...
et pour appliquer toutes les mises à jour, il suffit de
~$ pfexec pkg update
Si l'une des mises à jour nécessite un redémarrage, un nouvel environnement de démarrage sera créé et cela sera indiqué dans la sortie. Un clone d'OmniOS existe et a été mis à jour et activé. Au prochain démarrage, l'environnement de démarrage omnios-1 sera monté sur « / ». Redémarrez lorsque vous êtes prêt à passer à cet environnement de démarrage mis à jour.
Redémarrez à l'aide de shutdown ou init:
~$ pfexec init 6...
ou ...
~$ pfexec shutdown -i 6
Ne soyez pas tenté d'utiliser reboot now, car cela entraînerait le chargeur d'amorçage à essayer de charger un noyau nommé "now", ce qui échouerait et le ferait passer à son quatrième interpréteur avec une invite ok. Si vous faites cela, la récupération est possible via les deux commandes suivantes
ok set bootfile=platform/i86pc/kernel/amd64/unix
ok boot
Chapter 3
Installation d'OmniCube
3.1 Prérequis
3.1.1 NTP
Tous les nodes constitutifs de l'OmniCube doivent être parfaitement synchronisés via NTP: le consensus Raft entre orderers et la validité des certificats TLS en dépendent directement.
~$ pfexec su -
~# pkg install pkg:/service/network/ntpsec
Éditez /etc/inet/ntp.conf pour y déclarer vos serveurs de temps, ceux de votre réseau, pas une source publique si l'OmniCube est isolé (exemple ici: 10.155.252.[1,2]):
server 10.155.252.1 iburst
server 10.155.252.2 iburst
Forcez une première synchronisation avant de démarrer le service, sans quoi un écart trop important au premier lancement peut le faire refuser de démarrer:
~# ntpdate -b 10.155.252.1
~# svcadm enable network/ntp
Vérifiez enfin que le service est bien synchronisé sur chaque node avant de lancer oc-install:
~# ntpq -p
3.1.2 Réseau
L'adresse IP du réseau de management doit être configurée sur l'interface avant de lancer l'installation: oc-install propose un choix parmi les adresses déjà présentes (ipadm show-addr), il n'en crée aucune.
3.1.3 Installation des packages
Toute l'installation logicielle tient en une seule commande:
~# pkg install omnicube/omnicube
Ce package dépend de omnicube/hyperledger-fabric (les binaires peer, orderer, osnadmin, configtxgen, configtxlator, cryptogen), ainsi que des brands de zones (bhyve, ipkg, lipkg, lx, sparse), du service iSCSI (cible et initiateur), d'OpenJDK 21 et de jq; tous sont installés automatiquement.
3.2 Vue d'ensemble
Chaque node de l'OmniCube héberge son propre orderer et son propre peer Hyperledger Fabric, tous deux membres d'un unique canal nommé omnicube sur lequel est déployé un unique chaincode, également nommé omnicube. Un node correspond à une organisation Fabric à part entière, identifiée par son hostname (à la fois côté orderer, sous la forme <hostname>Orderer, et côté peer/application, sous la forme <hostname>).
Une fois l'installation terminée, chaque node fait tourner quatre services SMF:
- svc:/omnicube/hyperledger-orderer
- Un orderer node, ou simplement orderer, se charge de l'ordonnancement des transactions soumises sur le canal omnicube et, avec les autres orderer nodes, forme le service d’ordonnancement. La conception de Fabric reposant sur des algorithmes de consensus déterministes, tout bloc validé par les pairs est garanti comme étant définitif et correct. Les registres ne peuvent donc pas diverger comme c’est le cas dans de nombreux autres réseaux de blockchain.
- svc:/omnicube/hyperledger-peer
- Un élément fondamental d’un réseau blockchain Hyperledger Fabric est l’ensemble des peer nodes ou, simplement, les peers. OmniCube a par défaut un peer par node lancé par le service svc:/omnicube/hyperledeger-peer. Il gère les registres, endosse et valide les transactions, et expose l'API gRPC locale utilisée par le daemon.
- svc:/omnicube/omnicube-chaincode
- Le chaincode omnicube lui-même (classe OmniCubeContract). Il tourne en Chaincode as a Service (CCaaS): c'est un process autonome, à l'écoute sur 127.0.0.1:9999, auquel le peer se connecte. Il porte la logique métier: une suite de transactions par type d'objet (zone, zpool, disk, diskview, node), les erreurs étant remontées comme des exceptions qui annulent la transaction.
- svc:/omnicube/omnicube-daemon
- Le daemon OmniCube (classe OcDaemon), exécuté en root. C'est l'agent du node: il maintient le ledger comme un miroir fidèle de ce que Solaris détient réellement, à partir de trois sources - un scan initial de rattrapage, les sysevents Solaris en régime permanent, et les commandes envoyées par la GUI. Il s'appuie pour cela sur la librairie native libomnicube (via Java FFM/Panama) pour dialoguer avec OmniOS. Il faut enfin insister sur le fait que la seule source autoritative est OmniOS, le ledger n'étant que le reflet de la réalité des nodes.
Toute la configuration passe par un unique utilitaire interactif:
~# /opt/omnicube/utils/oc-install
Select your OmniCube configuration option:
1) New OmniCube installation
2) Join node to existing OmniCube
3) Admit a new node
4) Authentication configuration
5) Quit
- New OmniCube installation
- initialise un OmniCube depuis zéro (premier node, bloc de genèse local).
- Join node to existing OmniCube
- fait rejoindre ce node à un OmniCube existant.
- Admit a new node
- s'exécute sur un node déjà membre, en réponse à un join en cours ailleurs: c'est ce qui fait réellement accepter le nouveau node dans le canal.
- Authentication configuration
- n'est pas encore implémentée à ce jour (option présente dans le menu mais sans effet); l'intégration LDAP/AD se fait aujourd'hui exclusivement au niveau du système d'exploitation (voir chapitre Intégration Active Directory).
Join et Admit forment une paire: le premier se lance sur le nouveau node, le second sur un node déjà en place, et les deux options doivent être exécutées à peu près en parallèle, dans deux sessions séparées.
3.3 Installation du premier node
Sur le tout premier node de l'OmniCube, choisissez 1) New OmniCube installation. Sélectionnez d'abord l'adresse IP du réseau de management:
What is the network dedicated to the Hypercube?
1) 127.0.0.1/8
2) 10.155.252.14/24
3)::1/128
Le script substitue alors cette adresse (et le hostname local) dans les fichiers de configuration Fabric (crypto-config.yaml, configtx.yaml, orderer.yaml, core.yaml, sous /etc/opt/omnicube/hyperledger/), génère le matériel cryptographique de l'organisation (MSP + certificats TLS orderer/peer, réémis avec les bons SAN), puis produit le bloc de genèse du canal omnicube:
Network configuration
/etc/opt/omnicube/hyperledger/crypto-config.yaml... updated
/etc/opt/omnicube/hyperledger/configtx.yaml... updated
/etc/opt/omnicube/hyperledger/orderer.yaml... updated
/etc/opt/omnicube/hyperledger/core.yaml... updated
done
Cryptographic material generation...
done
Genesis block generation...
done
L'orderer est ensuite démarré, puis rejoint lui-même le canal à partir de ce bloc de genèse local:
~# svcadm enable -s svc:/omnicube/hyperledger-orderer:default
Channel join...
done
Le peer est démarré à son tour et rejoint le même canal:
~# svcadm enable -s svc:/omnicube/hyperledger-peer:default
Peer join...
done
Enfin, le chaincode omnicube est installé, approuvé et committé (le canal ne connaît encore aucune définition, donc à la séquence 1), et les services applicatifs sont démarrés:
Chain code import...
done
Chain code approve...
package id: omnicube_1.0:1a2b3c...
sequence: 1
done
Chain code commit...
done
Chain code service...
~# svcadm enable -s svc:/omnicube/omnicube-chaincode:default
~# svcadm enable -s svc:/omnicube/omnicube-daemon:default
done
3.4 Vérification
~# svcs -xv "*omnicube*"
svc:/omnicube/hyperledger-orderer:default (Hyperledger orderer daemon)
State: online since September 23, 2026 at 12:22:21 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-hyperledger-orderer:default.log
Impact: None.
svc:/omnicube/omnicube-chaincode:default (Omnicube chaincode)
State: online since September 23, 2026 at 12:23:29 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-omnicube-chaincode:default.log
Impact: None.
svc:/omnicube/hyperledger-peer:default (Hyperledger peer daemon)
State: online since September 23, 2026 at 12:22:24 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-hyperledger-peer:default.log
Impact: None.
svc:/omnicube/omnicube-daemon:default (Omnicube chaincode)
State: online since September 26, 2026 at 02:44:06 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-omnicube-daemon:default.log
Impact: None.
3.5 Ajout d'un nouveau node
Ajouter un node à un OmniCube existant nécessite une action sur deux machines: le nouveau node (join) et un node déjà membre disposant des droits d'administration du canal (admit). Les deux étapes s'entrelacent: le join attend que l'admit soit fait ailleurs avant de continuer.
3.5.1 Sur le nouveau node
Lancez oc-install, choisissez 2) Join node to existing OmniCube, puis sélectionnez l'adresse IP du réseau de management comme pour le premier node. Le matériel cryptographique de l'organisation est généré localement, puis le script publie les descripteurs de cette nouvelle organisation (au format attendu par un channel update) sur un petit serveur HTTP embarqué et attend:
Run oc-install "Admit a new node" on an existing node and hit enter when finished...
Ne validez pas encore: passez à l'étape suivante sur un node existant.
3.5.2 Sur un node existant
Sur un node déjà membre de l'OmniCube, lancez oc-install et choisissez 3) Admit a new node. Le script récupère la configuration courante du canal depuis son propre peer, puis demande l'adresse IP du nouveau node:
Enter the IP of the new node: 10.155.252.18
Il télécharge alors les descripteurs d'organisation publiés par le nouveau node à l'étape précédente, construit une mise à jour de la configuration du canal (ajout de l'organisation dans le groupe Application, dans le groupe Orderer, et ajout du nouveau consenter Raft), la signe avec les identités administrateur orderer et peer de ce node, puis la soumet:
consenter admitted and verified
Ce message ne s'affiche que lorsque le nouveau consenter Raft est effectivement retrouvé dans la configuration committée du canal, pas seulement accepté pour ordonnancement.
3.5.3 Retour sur le nouveau node
Une fois l'admission confirmée sur le node existant, revenez au terminal du nouveau node et validez l'invite laissée en attente. Le script demande alors l'adresse IP de ce node admettant:
Enter the IP of the admitting node: 10.155.252.14
Il y récupère la configuration courante du canal ainsi que le bloc de genèse (bloc 0), démarre l'orderer local et le fait rejoindre le canal, démarre le peer local et le fait rejoindre le canal à partir du bloc de genèse récupéré, puis installe le chaincode omnicube et l'approuve à la séquence déjà committée par les autres nodes (aucun nouveau commit n'est nécessaire, la définition existe déjà sur le canal):
Chain code already defined at sequence 1, adopting it.
Comme pour le premier node, les services omnicube-chaincode et omnicube-daemon sont démarrés en dernier. Vérifiez l'état des services avec la même commande svcs -xv "*omnicube*" que pour le premier node.
3.6 Installation de l'interface graphique
Il manque encore l'interface graphique en tant que telle.
~# pkg install hypercube/gui
Packages to install: 1
Services to change: 2
Create boot environment: No
Create backup boot environment: No
Planning linked: 0/1 done; 1 working: zone:test-lipkg-second
Linked image 'zone:test-lipkg-second' output:
`
Planning linked: 1/1 done
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 1/1 28741/28741 46.1/46.1 544k/s
Downloading linked: 0/1 done; 1 working: zone:test-lipkg-second
Downloading linked: 1/1 done
PHASE ITEMS
Installing new actions 32888/32888
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Reading search index Done
Updating search index 1/1
Executing linked: 0/1 done; 1 working: zone:test-lipkg-second
Executing linked: 1/1 done
Updating package cache 3/3
Il ne reste plus qu'à démarrer le service de l'interface graphique.
~# svcadm enable svc:/hypercube/gui:default
~# svcs -xv *"hypercube"*
svc:/hypercube/gui:default (node_guid daemon and vue server)
State: online since May 14, 2025 at 10:01:01 PM UTC
See: man -M /usr/share/man -s 8 node_gui
See: https://www.efit-partners.eu/
See: /var/svc/log/hypercube-gui:default.log
Impact: None.
svc:/hypercube/hypercubed:default (OmniCube daemon)
State: online since May 14, 2025 at 09:54:26 PM UTC
See: man -M /usr/share/man -s 8 hypercubed
See: https://www.efit-partners.eu/
See: /var/svc/log/hypercube-hypercubed:default.log
Impact: None.
svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
State: online since May 14, 2025 at 09:51:56 PM UTC
See: man -M /usr/share/man -s 8 geth
See: https://geth.ethereum.org/
See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.
L'interface graphique est désormais accessible via l'adresse IP du node ou de la zone sur lequel elle a été installée.
Chapter 4
Intégration Active Directory
4.1 Introduction
OmniOS peut s'intégrer dans un domaine Active Directory en tant que serveur de fichiers SMB et utiliser un serveur Active Directory à la fois pour l'authentification de connexion, pour fournir des services de noms aux comptes utilisateurs et pour le contrôle d'accès basé sur les rôles (RBAC).
4.2 Prérequis
Pour pouvoir gérer la plupart des fonctionnalités listées ci-dessus dans l'AD, il est nécessaire de modifier le schéma de ce dernier en utilisant ADextend.ldif.
L'explication pour modifier un schéma AD dépasse le cadre du présent document.
4.3 Préparation du système
4.3.1 DNS
Utilisez votre AD comme serveur DNS ou un server qui redirige les requêtes de votre domaine ad-domain.intra et _msdcs.ad-domain.intra.
# cat <<CFG_END >/etc/resolv.conf
nameserver 10.1.1.1
domain ad-domain.intra
search ad-domain.intra
CFG_END
4.3.2 NTP
Activez NTP, car une heure précise est essentielle pour le fonctionnement de Kerberos. La synchronisation peut être forcée en cas de forte différence de temps.
~$ pfexec su -
~#pkg install pkg:/service/network/ntpsec
~# ntpdate -b 10.0.0.1
~# svcadm enable network/ntp
4.3.3 LDAP
Le plugin OmniOS Active Directory ne prend pas en charge l'intégration complète de la connexion. Nous devons donc configurer un utilisateur ldap proxy, puis configurer le client LDAP pour activer les connexions Unix avec des comptes LDAP. L'utilisateur AD proxy doit disposer des droits appropriés pour lire les entrées du compte utilisateur.
- Ajouter le root certificate (root CA) qui a signé le certificat du serveur LDAP ou de l'Active Directory.
~$ pfexec certutil -A -d /var/ldap -i ~/ldap/ca-ca-1.crt -n "CA Root CA" -t "CT,,"
- Les utilisateurs devant pouvoir ouvrir une session shell, devront avoir les attributs suivants:
- gidNumber: 1 (Group other générique sous OmniOS)
- uidNumber: >= 2000 (Par convention)
- loginShell: /bin/bash
- unixHomeDirectory: Pour Active Directory, /home/[SAMAccountName] dans le cas d'utilisation d'autoFS ou /export/home/[SAMAccountName] autrement. Pour un serveur LDAP, uid.
- Dans le cas d'une utilisation d'Active Directory, configurez maintenant le client LDAP
~# ldapclient manual \
-a credentialLevel=proxy \
-a authenticationMethod=tls:simple \
-a proxyDN="cn=omnios ldap,cn=Users,dc=ad-domain,dc=intra" \
-a proxyPassword={NS1}81507fc87bf1d4bd3d7c31c9ce3d4516 ou Mot de passe en clair \
-a defaultSearchBase=dc=ad-domain,dc=intra \
-a domainName=AD-DOMAIN.INTRA \
-a "followReferrals=false" \
-a "defaultServerList=IPs ou FQDN" \
-a attributeMap=group:userpassword=userPassword \
-a attributeMap=group:memberuid=memberUid \
-a attributeMap=group:gidnumber=gidNumber \
-a attributeMap=passwd:uid=SAMAccountName \
-a attributeMap=shadow:uid=sAMAccountName \
-a attributeMap=passwd:gecos=cn ou gecos \
-a attributeMap=passwd:gidnumber=gidNumber \
-a attributeMap=passwd:uidnumber=uidNumber \
-a attributeMap=passwd:homedirectory=unixHomeDirectory ou HomeDirectory \
-a attributeMap=passwd:loginshell=loginShell \
-a attributeMap=shadow:shadowflag=shadowFlag \
-a attributeMap=shadow:userpassword=userPassword \
-a objectClassMap=group:posixGroup=group \
-a objectClassMap=passwd:posixAccount=user \
-a objectClassMap=shadow:shadowAccount=user \
-a 'serviceSearchDescriptor=passwd:dc=ad-domain,dc=intra?sub?(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=CN=solaccess,ou=System Grou
ps,ou=Solaris,ou=SysAdmins,dc=ad-domain,dc=intra))' \
-a 'serviceSearchDescriptor=shadow:dc=ad-domain,dc=intra?sub?(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=CN=solaccess,ou=System Grou
ps,ou=Solaris,ou=SysAdmins,dc=ad-domain,dc=intra))' \
-a serviceSearchDescriptor=group:dc=ad-domain,dc=intra?sub \
-a serviceSearchDescriptor=prof_attr:ou=Solaris,ou=SysAdmins,dc=ad-domain,dc=intra?sub \
-a serviceSearchDescriptor=auth_attr:ou=Solaris,dc=ad-domain,dc=intra?sub
- Assurez-vous que /etc/nsswitch.conf ne contient que des entrées ldap pour passwd et group, ainsi que dns pour hosts:
# ...
passwd: files ldap ad
group: files ldap ad
# ...
hosts: files dns
ipnodes: files dns
# ...
auth_attr: files ldap
prof_attr: files ldap
project: files ldap
# ...
4.3.4 Kerberos
- Installez le support Kerberos
~# pkg install system/security/kerberos-5
-
Éditer le fichier de configuration Kerberos /etc/krb5/krb5.conf comme suit tout en adaptant les adresses IP et noms de domaine
...
[libdefaults]
default_realm = AD-DOMAIN.INTRA
verify_ap_req_nofail = false
[realms]
___default_realm___ = {
kdc = 10.0.0.11
kdc = 10.0.0.12
kdc = 10.0.0.11
admin_server = 10.0.0.11
}
[domain_realm]
.ad-domain.intra = AD-DOMAIN.INTRA
ad-domain.intra = AD-DOMAIN.INTRA
[logging]
default = FILE:/var/krb5/kdc.log
kdc = FILE:/var/krb5/kdc.log
kdc_rotate = {
# How often to rotate kdc.log. Logs will get rotated no more
# often than the period, and less often if the KDC is not used
# frequently.
period = 1d
# how many versions of kdc.log to keep around (kdc.log.0, kdc.log.1, ...)
versions = 10
}
[appdefaults]
kinit = {
renewable = true
forwardable= true
}
-
Configurez Kerberos pour MS Active Directory (ms_ad). L'option -C permet de spécifier l'enregistrement dans un OU autre que CN=Computers.
~# kclient -T ms_ad -a [USER_WITH_DOMAIN_JOIN_PERMS] -C "ou=OmnicubeServers,ou=Servers"
~# kinit -V administrator
4.3.5 PAM
Enfin, PAM doit être configuré pour utiliser kerberos lorsque cela est approprié via /etc/pam.conf. Les entrées sont probablement déjà présentes, il vous suffit de supprimer le caractère de commentaire #1.
login auth sufficient pam_krb5.so.1
krlogin auth required pam_krb5.so.1
krsh auth required pam_krb5.so.1
ktelnet auth required pam_krb5.so.1
other auth sufficient pam_krb5.so.1
4.3.6 Utilisateurs
Pour chaque utilisateur (SAMAccountName ou uid), il y a lieu de créer un home directory et d'y copier les skeletons.
~$ pfexec su -
~# mkdir /export/home/{SAMAccountName}
~# cp -p /etc/skel/.[a-z]* /export/home/{SAMAccountName}
~# chown -R {SAMAccountName}:other /export/home/{SAMAccountName}
Éventuellement, l'utilisateur peut se voir attribuer les droits d'administrateur (root) par ajout de
[SAMAccountName]::::type=normal;profiles=Primary Administrator
à un fichier nommé librement dans le directory /etc/user_attr.d/
~$ pfexec vi /etc/user_attr.d/
4.3.7 SMB
Activer le partage de fichiers SMB.
Pour nous assurer que nous avons les mêmes identifiants utilisateur partout, nous voulons les conserver dans Active Directory.
~# svccfg -s svc:/system/idmap setprop config/directory_based_mapping=astring: idmu
~# svcadm refresh svc:/system/idmap
~# sharectl set -p lmauth_level=5 smb
~# sharectl set -p system_comment=« My Funny Fileserver » smb
~# svcadm enable -r smb/server
4.3.8 Tests
Votre serveur OmniOS devrait maintenant être accessible en tant que serveur de fichiers smb depuis les clients Windows, permettant ainsi l'accès SSO.
Sur la ligne de commande OmniOS, vous devriez voir tous les comptes utilisés avec getent passwd.
4.4 Multifactor Authentication (MFA)
Une fois OmniOS connecté à un directory quelqu'il soit, c'est ce dernier qui prendra en charge le Multifactor Authentication. Bien que nombre de produit implémente leur propre système d'authentification voir un MFA indépendant, cette approche est délétère simplement parce qu'elle nécessite de maintenir les comptes utilisateurs dans plusieurs produits différents. L'OmniCube n'a pas vocation à se substituer à un directory mais bien à l'utiliser pour l'authentification.
Chapter 5
Configuration d'une console série
5.1 Introduction
De nombreuses cartes mères modernes prennent en charge l'accès à une console à distance. Intel appelle sa solution "Baseboard Management Controller" (BMC). HPE la nomme "Integrated Lights-Out" (iLO), ...
Outre leur interface Web conviviale, BMC/iLO offrent également une fonctionnalité appelée SOL SSH. Celle-ci permet d'accéder au premier port série (ttya/com1) via ssh. Une fois configurée, vous pouvez accéder aux paramètres du BIOS et à d'autres éléments liés au démarrage, tels que la sélection du support de démarrage, via ssh, ce qui est très pratique. Mais mieux encore, vous pouvez également configurer OmniOS pour fournir un accès à une console série via ce chemin. Ce qui constitue une excellente option de récupération.
Les exemples suivants sont des captures d'écran d'une carte mère Intel S2600ST utilisant donc BMC.
5.2 Configuration du BMC
Configurer le port SSH SOL
Figure 5.1: Configuration du port SSH SOL
Activer SSH SOL
Figure 5.2: Activation du port SSH SOL
5.3 Paramètres BIOS
Activer le port série
Figure 5.3: Activation du port série
Activer la redirection de la console.
Comme nous exécutons la console sur une interface Ethernet dédiée, SOL est uniquement activé à cet endroit.
Figure 5.4: Activation du port série
5.4 Configurer la console série dans OmniOS
Configurer les ports ttya.
~# sttydefs -r ttya
~# sttydefs -a ttya -i '115200 hupcl opost onlcr ofill' -f '115200'
Configurez une nouvelle instance de connexion à la console
~# svccfg -s svc:/system/console-login delete -f ttya
~# svccfg -f - <<EOF
select svc:/system/console-login
add ttya
select svc:/system/console-login:ttya
addpg ttymon application
setprop ttymon/device = astring: /dev/term/a
setprop ttymon/terminal_type = astring: xterm
setprop ttymon/label = astring: ttya
setprop ttymon/modules = astring: ldterm,ttcompat
setprop ttymon/nohangup = boolean: true
setprop ttymon/prompt = astring: "`uname -n` ttya login:"
addpg general framework
EOF
Activez les nouvelles connexions à la console
~# svcadm enable svc:/system/console-login:ttya
Autorisez les connexions root sur toutes les consoles
~# perl -i -p -e 's/\s*(CONSOLE.+)/# $1/' /etc/default/login
5.5 Configurez le boot loader pour utiliser la console série
Vous pouvez également configurer le chargeur de démarrage d'Omnios pour communiquer via la série:
~# cat >/boot/conf.d/serial <<EOF
boot_multicons="YES"
boot_serial="YES"
comconsole_speed="115200"
os_console="text"
console="ttya,text"
ttya-mode="115200,8,n,1,-"
EOF
Enfin effectuez un update du boot archive et redémarrez
~# bootadm update-archive
~# init 6
5.6 Tests
.
Vous pouvez maintenant vous connecter en ssh sur la console
~# ssh -p 66 server-console-ip
5.7 Redimentionnement de la console
Si vous avez essayé vim sur votre nouvelle console série, vous avez probablement été déçu: l'écran s'est affiché de manière confuse.
Cela s'explique par le fait que, via la connexion à la console série, stty ne semble pas être correctement informé de la taille de l'écran et de ses modifications. Exécutez stty et il indiquera que le nombre de lignes et de colonnes est égal à 0, ce qui n'est pas idéal.
Il existe toutefois un moyen de résoudre ce problème. Le plus simple est de taper resize pour régler le problème... Malheureusement, la commande resize fait partie du paquet xterm qui n'est probablement pas installé sur votre GZ OmniOS. Si vous utilisez bash, il existe toutefois une autre solution en passant par une petite fonction shell que vous n'aurez qu'à mettre dans votre profile.
# .bash_profile
if [ ! -f /usr/bin/resize ]; then
resize() {
old=$(stty -g)
stty -echo
printf '\033[18t'
IFS=';' read -d t _ rows cols _
stty "$old"
stty cols "$cols" rows "$rows"
}
fi
# resize terminal
if [ "$(tty)" = '/dev/term/a' ]; then
resize
fi
Footnotes:
1Voir man pam_krb5 pour plus de détails
OmniCube: Guide d'installation et de configuration
OmniCube: Guide d'installation et de configuration
EFit-partners
Mars 2026
Chapter 1
Installation d'OmniOS
1.1 Nouvelle installation
Le système de virtualisation OmniCube est basé sur le système d'exploitation OmniOS lui-même dérivé de Solaris. L'installation d'OmniCube commence donc par l'installation d'OmniOS telle que vous pouvez la retrouver sur site même d'OmniOS (https://omnios.org/setup/freshinstall.html)
Pour effectuer cette installation, il est possible d'utiliser un CD bootable, une clé USB ou PXE. Les images pour ces formats sont disponibles sur la page de téléchargements https://omnios.org/download.html.
Les informations ci-dessous concernent l'installation de la version r151054. L'installation d'une version LTS ultérieure peut légèrement différer sans toutefois présenter de différence rédhibitoire pour l'utilisateur.
OmniOS est un système d'exploitation dédié à la virtualisation qui nécessite la configuration minimale suivante:
- Architecture 64 bits (x86-64)
- Taille de la mémoire 1 Gio (minimum)
- Disque dur 8 Gio (minimum)
A celle-ci s'ajoutent les besoins des machines virtuelles hébergées.
1.2 Démarrage à partir de l'image
Lors du démarrage à partir d'un CD, d'une clé USB ou d'un PXE, le programme d'installation d'OmniOS affiche plusieurs options dont l'installation est celle par défaut. Pour procéder à l'installation, il suffit donc d'appuyer sur la touche return ou de laisser s'écouler le temps nécessaire pour que l'installation se poursuive.
Figure 1.1: Écran du loader
Une fois le programme d'installation démarré, il est possible d'utiliser l'ancien programme d'installation en mode texte en appuyant sur T dans les 10 secondes. Si l'on presse la touche return ou si le délai expire, le programme d'installation par défaut en mode dialogue sera lancé.
Figure 1.2: Selection de l'installer
Sélectionnez la disposition de clavier souhaitée dans le menu affiché. Les touches fléchées permettent de se déplacer vers le haut et vers le bas, ou la première lettre de la sélection souhaitée permet de passer aux entrées commençant par cette lettre; appuyez plusieurs fois pour faire défiler les dispositions commençant par la même lettre. Une fois votre choix effectué, appuyez sur return pour continuer.
Figure 1.3: Selection du type de clavier
Après avoir sélectionné la disposition du clavier, le menu d'installation de niveau supérieur s'affiche. Cela offre plusieurs options, mais pour une installation simple sur un disque dur vierge, sélectionnez l'option en surbrillance Find disks, create rpool, and install OmniOS et appuyez sur return.
Figure 1.4: Install, shell ou reboot
L'écran suivant affiche la liste des disques durs détectés par le système. Sélectionnez les disques à utiliser pour l'installation en vous déplaçant vers le haut et vers le bas à l'aide des touches fléchées et en appuyant sur la barre d'espace pour cocher la case en regard de chaque élément. Une fois terminé, appuyez sur return pour continuer.
Si plusieurs disques sont sélectionnés et en fonction de leur nombre, l'écran suivant vous invitera à choisir le niveau RAID souhaité pour le zpool d'installation.
Figure 1.5: Sélection des disques
Ensuite, si plusieurs disques ont été sélectionnés, choisissez le type de configuration RAID souhaité pour le pool racine. Les options affichées ici dépendront du nombre de disques sélectionnés à l'étape précédente.
[b]0.49

RAID 4 disques
[b]0.49

RAID 2 disques
Sélection RAID
Ceci fait, la configuration du rpool s'affiche proposant d'éventuellement changer son nom, le schéma de partitionnement (UEFI), la compression ou la taille des secteurs.
Figure 1.6: Configuratnio du rpool
Entrez un nom d'hôte pour le nouveau système, puis appuyez sur return.
Figure 1.7: Choix du hostname
Pour sélectionner un fuseau horaire, choisissez d'abord un continent ou un océan dans le menu affiché, puis sélectionnez une région et enfin le fuseau horaire souhaité. Si vous souhaitez entrer directement une chaîne de fuseau horaire POSIX, sélectionnez la dernière option affichée (none) ou, si vous souhaitez utiliser UTC, choisissez directement cette option.
Il est important de noter ici que, si la fonctionnalité de snapshot automatique de l'OmniCube est utilisée, le fuseau horaire doit être UTC. Dans le cas contraire, lors du passage de l'heure d'été à l'heure d'hiver,
des snapshots seront perdus. De plus, si une infrastructure couvre plusieurs fuseaux horaires, il est plus simple que les snapshots pris à intervalles réguliers aient une nomenclature cohérente entre les sites.
[b]0.49

[b]0.49

Choix du fuseau horaire
Le programme d'installation commence alors à installer l'image du système d'exploitation sur le zpool et affiche la progression à l'écran.
Figure 1.8: Barre de progression ZFS
Une fois l'écriture sur le zpool terminée, le programme d'installation affiche des informations sur l'état actuel du système qui a maintenant le rpool monté, prêt à être configuré. Appuyez sur return pour continuer.
Figure 1.9: Installation complète
Le menu post-installation offre la possibilité de configurer certains paramètres système de base avant le premier démarrage, ainsi que des options pour redémarrer ou arrêter le système.
Figure 1.10: Post-installation
Figure 1.11: Post-configuration
La sélection de la première option affiche un menu permettant de configurer certains paramètres système initiaux tels que l'adresse IP et les mots de passe.
Une configuration réseau simple peut être effectuée via le menu présenté. Toutefois, dans le cadre d'une installation d'OmniCube dont l'utilisation réclame en général disponibilité et sécurité, il est recommandé de configurer un agrégat LACP et des VLANs. Ce genre de configuration plus sophistiquée se fait en ligne de commande, comme nous le verrons par la suite.
Figure 1.12: Configuration réseau
Pour l'installation d'OmniCube, il est recommandé de:
- créer un utilisateur d'administration;
- définir un mot de passe pour root et
- activer le serveur SSH.
OmniOS est livré avec deux méthodes différentes pour l'élévation des privilèges. pfexec est la norme Solaris/OmniOS/Illumos qui utilise des profils pour spécifier les privilèges, mais sudo, bien que déconseillé, est également inclus et pris en charge. Lors de la création de l'utilisateur il est conseillé de lui attribuer le rôle Administrateur principal qui lui permet d'accéder au compte root via pfexec.
[b]0.32

[b]0.32

[b]0.32

Création d'un
user
Une fois terminé, la clé USB ou le CD peut être retiré et le système peut être redémarré via le menu.
L'écran de démarrage qui s'affiche à partir du disque dur est presque identique à celui du CD ou de la clé USB. Vous pouvez appuyer sur return ou attendre la fin du délai pour démarrer le système d'exploitation.
Figure 1.13: Premier boot
Au premier démarrage, la base de données des manifestes des services est créée et un compte à rebours s'affiche. Les démarrages suivants seront beaucoup plus rapides.
Sauf configuration explicite dans le menu de configuration post-installation, le mot de passe de l'utilisateur root sera vide (appuyez simplement sur return). L'installation est terminée et root est connecté.
1.3 Configuration réseau avancée
Chapter 2
Mise à jour du système
2.1 Packaging
2.1.1 Dépôts IPS
OmniOS adopte une approche par couches pour le packaging. En plus du logiciel assez minimaliste fourni avec le système d'exploitation de base, des packages supplémentaires sont fournis via des dépôts supplémentaires. Il existe un dépôt supplémentaire géré par l'OmniOS Association et plusieurs autres gérés par des tiers dont celui d'OmniCube.
Une installation de base d'OmniOS présente ses dépôts comme suit:
root@omnicube:~# pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F https://pkg.omnios.org/r151054/core/
omnios mirror online F https://us-west.mirror.omnios.org/r151054/core/
extra.omnios origin online F https://pkg.omnios.org/r151054/extra/
extra.omnios mirror online F https://us-west.mirror.omnios.org/r151054/extra/
OmniCube
Comme tous les éléments de l'OmniCube sont packagés, pour pouvoir l'installer, il suffit d'ajouter son dépôt aux serveurs:
~# pkg set-publisher -m https://omnios.efit-partners.eu/r151054/ omnicube
La configuration de publishers est alors la suivante:
user@server:~$ pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F https://pkg.omnios.org/r151054/core/
extra.omnios origin online F https://pkg.omnios.org/r151054/extra/
omnicube origin online F https://omnios.efit-partners.eu/r151054/
Dépôt OmniCube LTS
Les versions paires d'OmniOS sont stables et les versions impaires sont instables (bloody). Une version stable sur quatre est une version de support à long terme (LTS). Les versions LTS bénéficient d'un support pendant trois ans.
Bien que l'utilisation des dépôts OmniOS soit parfaitement compatible avec l'OmniCube, l'utilisation de versions LTS est recommandée pour leur stabilité dans le temps.
Cependant, comme tout logiciel libre, OmniOS est en constante évolution ce qui signifie qu'une version installée sur un nouveau serveur pourrait diverger des précédentes. Pour permettre une homogénéité des versions à travers de tous les nodes d'un OmniCube, il est possible d'utiliser les dépôts proposant toutes les différentes versions des LTS, actuellement sans limite dans le temps.
Pour ce faire, il suffit de remplacer les dépôts d'OmniOS comme suit:
user@server:~# pfexec su -
root@server:~# pkg unset-publisher omnios
PHASE ITEMS
Updating package cache 1/1
root@server:~# pkg unset-publisher extra.omnios
PHASE ITEMS
Updating package cache 1/1
root@server:~# pkg publisher
PUBLISHER TYPE STATUS P LOCATION
root@server:~# pkg set-publisher -r -O https://pkg.omnicube.org/r151054bj/ omnios
root@server:~# pkg set-publisher -r -O https://pkg.omnicube.org/r151054bj/ extra.omnios
root@server:~$ pkg set-publisher -r -O https://pkgdev.efit-partners.eu/r151054/ efit-partners
root@server:~$ pkg publisher
PUBLISHER TYPE STATUS P LOCATION
omnios origin online F https://pkg.omnicube.org/r151054bj/
extra.omnios origin online F https://pkg.omnicube.org/r151054bj/
efit-partners origin online F https://pkgdev.efit-partners.eu/r151054/
2.2 Patching d'OmniOS
2.2.1 Mettre à jour tous les packages
La première chose à faire après avoir installé OmniOS est de s'assurer que tous les paquets sont à jour. Les paquets dans OmniOS sont gérés à l'aide de l'utilitaire de ligne de commande pkg.
Commencez par vous assurer que la liste des paquets disponibles est à jour
~$ pfexec pkg refresh
Actualisation du catalogue 1/1 omnios
et affichez les mises à jour disponibles (aucun privilège requis)
~$ pkg list -u
NOM (ÉDITEUR) VERSION IFO
archiver/gnu-tar 1.29-0.151024 i--
...
et pour appliquer toutes les mises à jour, il suffit de
~$ pfexec pkg update
Si l'une des mises à jour nécessite un redémarrage, un nouvel environnement de démarrage sera créé et cela sera indiqué dans la sortie. Un clone d'OmniOS existe et a été mis à jour et activé. Au prochain démarrage, l'environnement de démarrage omnios-1 sera monté sur « / ». Redémarrez lorsque vous êtes prêt à passer à cet environnement de démarrage mis à jour.
Redémarrez à l'aide de shutdown ou init:
~$ pfexec init 6...
ou ...
~$ pfexec shutdown -i 6
Ne soyez pas tenté d'utiliser reboot now, car cela entraînerait le chargeur d'amorçage à essayer de charger un noyau nommé "now", ce qui échouerait et le ferait passer à son quatrième interpréteur avec une invite ok. Si vous faites cela, la récupération est possible via les deux commandes suivantes
ok set bootfile=platform/i86pc/kernel/amd64/unix
ok boot
Chapter 3
Installation d'OmniCube
3.1 Prérequis
3.1.1 NTP
Tous les nodes constitutifs de l'OmniCube doivent être parfaitement synchronisés via NTP: le consensus Raft entre orderers et la validité des certificats TLS en dépendent directement.
~$ pfexec su -
~# pkg install pkg:/service/network/ntpsec
Éditez /etc/inet/ntp.conf pour y déclarer vos serveurs de temps, ceux de votre réseau, pas une source publique si l'OmniCube est isolé (exemple ici: 10.155.252.[1,2]):
server 10.155.252.1 iburst
server 10.155.252.2 iburst
Forcez une première synchronisation avant de démarrer le service, sans quoi un écart trop important au premier lancement peut le faire refuser de démarrer:
~# ntpdate -b 10.155.252.1
~# svcadm enable network/ntp
Vérifiez enfin que le service est bien synchronisé sur chaque node avant de lancer oc-install:
~# ntpq -p
3.1.2 Réseau
L'adresse IP du réseau de management doit être configurée sur l'interface avant de lancer l'installation: oc-install propose un choix parmi les adresses déjà présentes (ipadm show-addr), il n'en crée aucune.
3.1.3 Installation des packages
Toute l'installation logicielle tient en une seule commande:
root@server:~# pkg install omnicube/omnicube
Packages to install: 2
Services to change: 2
Create boot environment: No
Create backup boot environment: No
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 2/2 72/72 146.9/146.9 30.9M/s
PHASE ITEMS
Installing new actions 139/139
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Reading search index Done
Updating search index 2/2
Updating package cache 3/3
Ce package dépend de omnicube/hyperledger-fabric (les binaires peer, orderer, osnadmin, configtxgen, configtxlator, cryptogen), ainsi que des brands de zones (bhyve, ipkg, lipkg, lx, sparse), du service iSCSI (cible et initiateur), d'OpenJDK 21 et de jq; tous sont installés automatiquement.
3.2 Vue d'ensemble
Chaque node de l'OmniCube héberge son propre orderer et son propre peer Hyperledger Fabric, tous deux membres d'un unique canal nommé omnicube sur lequel est déployé un unique chaincode, également nommé omnicube. Un node correspond à une organisation Fabric à part entière, identifiée par son hostname (à la fois côté orderer, sous la forme <hostname>Orderer, et côté peer/application, sous la forme <hostname>).
Une fois l'installation terminée, chaque node fait tourner quatre services SMF:
- svc:/omnicube/hyperledger-orderer
- Un orderer node, ou simplement orderer, se charge de l'ordonnancement des transactions soumises sur le canal omnicube et, avec les autres orderer nodes, forme le service d’ordonnancement. La conception de Fabric reposant sur des algorithmes de consensus déterministes, tout bloc validé par les pairs est garanti comme étant définitif et correct. Les registres ne peuvent donc pas diverger comme c’est le cas dans de nombreux autres réseaux de blockchain.
- svc:/omnicube/hyperledger-peer
- Un élément fondamental d’un réseau blockchain Hyperledger Fabric est l’ensemble des peer nodes ou, simplement, les peers. OmniCube a par défaut un peer par node lancé par le service svc:/omnicube/hyperledeger-peer. Il gère les registres, endosse et valide les transactions, et expose l'API gRPC locale utilisée par le daemon.
- svc:/omnicube/omnicube-chaincode
- Le chaincode omnicube lui-même (classe OmniCubeContract). Il tourne en Chaincode as a Service (CCaaS): c'est un process autonome, à l'écoute sur 127.0.0.1:9999, auquel le peer se connecte. Il porte la logique métier: une suite de transactions par type d'objet (zone, zpool, disk, diskview, node), les erreurs étant remontées comme des exceptions qui annulent la transaction.
- svc:/omnicube/omnicube-daemon
- Le daemon OmniCube (classe OcDaemon), exécuté en root. C'est l'agent du node: il maintient le ledger comme un miroir fidèle de ce que Solaris détient réellement, à partir de trois sources - un scan initial de rattrapage, les sysevents Solaris en régime permanent, et les commandes envoyées par la GUI. Il s'appuie pour cela sur la librairie native libomnicube (via Java FFM/Panama) pour dialoguer avec OmniOS. Il faut enfin insister sur le fait que la seule source autoritative est OmniOS, le ledger n'étant que le reflet de la réalité des nodes.
Toute la configuration passe par un unique utilitaire interactif:
~# /opt/omnicube/utils/oc-install
Select your OmniCube configuration option:
1) New OmniCube installation
2) Join node to existing OmniCube
3) Admit a new node
4) Authentication configuration
5) Quit
- New OmniCube installation
- initialise un OmniCube depuis zéro (premier node, bloc de genèse local).
- Join node to existing OmniCube
- fait rejoindre ce node à un OmniCube existant.
- Admit a new node
- s'exécute sur un node déjà membre, en réponse à un join en cours ailleurs: c'est ce qui fait réellement accepter le nouveau node dans le canal.
- Authentication configuration
- n'est pas encore implémentée à ce jour (option présente dans le menu mais sans effet); l'intégration LDAP/AD se fait aujourd'hui exclusivement au niveau du système d'exploitation (voir chapitre Intégration Active Directory).
Join et Admit forment une paire: le premier se lance sur le nouveau node, le second sur un node déjà en place, et les deux options doivent être exécutées à peu près en parallèle, dans deux sessions séparées.
3.3 Installation du premier node
Sur le tout premier node de l'OmniCube, choisissez 1) New OmniCube installation. Sélectionnez d'abord l'adresse IP du réseau de management:
root@sr02efit-alt100:~# /opt/omnicube/utils/oc-install
1) New OmniCube installation
2) Join node to existing OmniCube
3) Admit a new node
4) Authentication configuration
5) Quit
Select your OmniCube configuration option: 1
No updates necessary for this image.
1) 127.0.0.1/8
2) 10.255.0.14/24
3) 10.155.252.14/24
4) ::1/128
What is the network dedicated to the Hypercube? 3
Network configuration
/etc//opt/omnicube/hyperledger/crypto-config.yaml... updated
/etc//opt/omnicube/hyperledger/configtx.yaml... updated
/etc//opt/omnicube/hyperledger/orderer.yaml... updated
/etc//opt/omnicube/hyperledger/core.yaml... updated
done
Le script substitue alors cette adresse (et le hostname local) dans les fichiers de configuration Fabric (crypto-config.yaml, configtx.yaml, orderer.yaml, core.yaml, sous /etc/opt/omnicube/hyperledger/), génère le matériel cryptographique de l'organisation (MSP + certificats TLS orderer/peer, réémis avec les bons SAN), puis produit le bloc de genèse du canal omnicube:
Cryptographic material generation...
sr02efit-alt100.omnicube.org
Certificate request self-signature ok
subject=CN=orderer.sr02efit-alt100.omnicube.org
Certificate request self-signature ok
subject=CN=peer0.sr02efit-alt100.omnicube.org
done
Genesis block generation...
2026-10-01 12:54:49.096 UTC 0001 INFO [common.tools.configtxgen] main -> Loading configuration
2026-10-01 12:54:49.097 UTC 0002 INFO [common.tools.configtxgen.localconfig] completeInitialization -> orderer type: etcdraft
2026-10-01 12:54:49.097 UTC 0003 INFO [common.tools.configtxgen.localconfig] completeInitialization -> Orderer.EtcdRaft.Options unset, setting to tick_interval:"500ms" election_tick:10 heartbeat_tick:1 max_inflight_blocks:5 snapshot_interval_size:16777216
2026-10-01 12:54:49.098 UTC 0004 INFO [common.tools.configtxgen.localconfig] Load -> Loaded configuration: /etc/opt/omnicube/hyperledger/configtx.yaml
2026-10-01 12:54:49.099 UTC 0005 INFO [common.tools.configtxgen] doOutputBlock -> Generating genesis block
2026-10-01 12:54:49.099 UTC 0006 INFO [common.tools.configtxgen] doOutputBlock -> Creating application channel genesis block
2026-10-01 12:54:49.099 UTC 0007 INFO [common.tools.configtxgen] doOutputBlock -> Writing genesis block
done
L'orderer est ensuite démarré, puis rejoint lui-même le canal à partir de ce bloc de genèse local:
Channel join...
Status: 201
{
"name": "omnicube",
"url": "/participation/v1/channels/omnicube",
"consensusRelation": "consenter",
"status": "active",
"height": 1
}
done
Le peer est démarré à son tour et rejoint le même canal:
Peer join...
2026-10-01 12:54:55.306 UTC 0001 INFO [grpc] Infof -> [core] original dial target is: "10.155.252.14:7051"
2026-10-01 12:54:55.306 UTC 0002 INFO [grpc] AddTraceEvent -> [core] [Channel #1]Channel created
2026-10-01 12:54:55.306 UTC 0003 INFO [grpc] AddTraceEvent -> [core] [Channel #1]parsed dial target is: resolver.Target{URL:url.URL{Scheme:"passthrough", Opaque:"", User:(*url.Userinfo)(nil), Host:"", Path:"/10.155.252.14:7051", Fragment:"", RawQuery:"", RawPath:"", RawFragment:"", ForceQuery:false, OmitHost:false}}
...
done
Enfin, le chaincode omnicube est installé, approuvé et committé (le canal ne connaît encore aucune définition, donc à la séquence 1), et les services applicatifs sont démarrés:
Chain code import...
2026-10-01 12:54:55.402 UTC 0001 INFO [grpc] Infof -> [core] original dial target is: "10.155.252.14:7051"
2026-10-01 12:54:55.402 UTC 0002 INFO [grpc] AddTraceEvent -> [core] [Channel #1]Channel created
2026-10-01 12:54:55.402 UTC 0003 INFO [grpc] AddTraceEvent -> [core] [Channel #1]parsed dial target is: resolver.Target{URL:url.URL{Scheme:"passthrough", Opaque:"", User:(*url.Userinfo)(nil), Host:"", Path:"/10.155.252.14:7051", Fragment:"", RawQuery:"", RawPath:"", RawFragment:"", ForceQuery:false, OmitHost:false}}
...
Installed chaincodes on peer:
Package ID: omnicube:15fe3881832ee8b1d6acb35332349270c9a625605a3a66061fc64a010571e6c7, Label: omnicube
done
Chain code approve...
package id: omnicube:15fe3881832ee8b1d6acb35332349270c9a625605a3a66061fc64a010571e6c7
sequence: 1
2026-10-01 12:54:55.608 UTC 0001 INFO [grpc] Infof -> [core] original dial target is: "10.155.252.14:7051"
...
}
done
Chain code approve...
package id: omnicube_1.0:1a2b3c...
sequence: 1
done
Chain code commit...
2026-10-01 12:55:01.481 UTC 0001 INFO [grpc] Infof -> [core] original dial target is: "10.155.252.14:7051"
2026-10-01 12:55:01.481 UTC 0002 INFO [grpc] AddTraceEvent -> [core] [Channel #1]Channel created
2026-10-01 12:55:01.481 UTC 0003 INFO [grpc] AddTraceEvent -> [core] [Channel #1]parsed dial target is: resolver.Target{URL:url.URL{Scheme:"passthrough", Opaque:"", User:(*url.Userinfo)(nil), Host:"", Path:"/10.155.252.14:7051", Fragment:"", RawQuery:"", RawPath:"", RawFragment:"", ForceQuery:false, OmitHost:false}}
...
Committed chaincode definition for chaincode 'omnicube' on channel 'omnicube':
Version: 1.0, Sequence: 1, Endorsement Plugin: escc, Validation Plugin: vscc, Approvals: [sr02efit-alt100: true]
done
Chain code service...
done
3.4 Vérification
Les quatre services constitutifs de l'OmniCube sont en principe démarrés par l'oc-install. Un svc -xv permet de le vérifier.
~# svcs -xv "*omnicube*"
svc:/omnicube/hyperledger-orderer:default (Hyperledger orderer daemon)
State: online since September 23, 2026 at 12:22:21 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-hyperledger-orderer:default.log
Impact: None.
svc:/omnicube/omnicube-chaincode:default (Omnicube chaincode)
State: online since September 23, 2026 at 12:23:29 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-omnicube-chaincode:default.log
Impact: None.
svc:/omnicube/hyperledger-peer:default (Hyperledger peer daemon)
State: online since September 23, 2026 at 12:22:24 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-hyperledger-peer:default.log
Impact: None.
svc:/omnicube/omnicube-daemon:default (Omnicube chaincode)
State: online since September 26, 2026 at 02:44:06 PM UTC
See: man -M /usr/share/man -s 8 omnicube
See: https://www.efit-partners.eu/
See: /var/svc/log/omnicube-omnicube-daemon:default.log
Impact: None.
Le log du daemon montre l'ajout des différents éléments (zones, disques et zpools) du serveur être ajoutés à la blockchain.
~#: tail -f /var/svc/log/omnicube-omnicube-daemon:default.log
[ Oct 1 12:55:04 Enabled. ]
[ Oct 1 12:55:04 Executing start method ("/lib/svc/method/omnicube/omnicube-daemon start"). ]
[ Oct 1 12:55:04 Method "start" exited with status 0. ]
Oct 01 12:55:05 notice mirroring as sr02efit-alt100
Oct 01, 2026 12:55:05 PM io.grpc.netty.shaded.io.grpc.netty.TcpMetrics loadEpollInfo
INFO: Epoll available during static init of TcpMetrics:false
Oct 01 12:55:06 notice zone global: added
...
Oct 01 12:58:21 notice listening for requests
3.5 Ajout d'un nouveau node
Ajouter un node à un OmniCube existant commence de manière identique au premier node par l'installation du package omnicube et l'exécution de la commande oc-install.
root@sr03efit-alt100:~# pkg install omnicube/omnicube
Packages to install: 2
Services to change: 2
Create boot environment: No
Create backup boot environment: No
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 2/2 72/72 146.9/146.9 10.3M/s
PHASE ITEMS
Installing new actions 139/139
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Reading search index Done
Updating search index 2/2
Updating package cache 3/3
La commande oc-install nécessite une action sur deux machines: le nouveau node (join) et un node déjà membre disposant des droits d'administration du canal (admit). Les deux étapes s'entrelacent: le join attend que l'admit soit fait ailleurs avant de continuer.
3.5.1 Sur le nouveau node
Lancez oc-install, choisissez 2) Join node to existing OmniCube, puis sélectionnez l'adresse IP du réseau de management comme pour le premier node. Le matériel cryptographique de l'organisation est généré localement, puis le script publie les descripteurs de cette nouvelle organisation (au format attendu par un channel update) sur un petit serveur HTTP embarqué et attend:
root@sr03efit-alt100:~# /opt/omnicube/utils/oc-install
1) New OmniCube installation
2) Join node to existing OmniCube
3) Admit a new node
4) Authentication configuration
5) Quit
Select your OmniCube configuration option: 2
No updates necessary for this image.
1) 127.0.0.1/8
2) 10.155.252.16/24
3) ::1/128
What is the network dedicated to the Hypercube? 2
Network configuration
/etc//opt/omnicube/hyperledger/crypto-config.yaml... updated
/etc//opt/omnicube/hyperledger/configtx.yaml... updated
/etc//opt/omnicube/hyperledger/orderer.yaml... updated
/etc//opt/omnicube/hyperledger/core.yaml... updated
done
Cryptographic material generation...
sr03efit-alt100.omnicube.org
Certificate request self-signature ok
subject=CN=orderer.sr03efit-alt100.omnicube.org
Certificate request self-signature ok
subject=CN=peer0.sr03efit-alt100.omnicube.org
done
2026-10-01 13:15:29.812 UTC 0001 INFO [common.tools.configtxgen] main -> Loading configuration
2026-10-01 13:15:29.814 UTC 0002 INFO [common.tools.configtxgen.localconfig] completeInitialization -> orderer type: etcdraft
2026-10-01 13:15:29.814 UTC 0003 INFO [common.tools.configtxgen.localconfig] completeInitialization -> Orderer.EtcdRaft.Options unset, setting to tick_interval:"500ms" election_tick:10 heartbeat_tick:1 max_inflight_blocks:5 snapshot_interval_size:16777216
2026-10-01 13:15:29.814 UTC 0004 INFO [common.tools.configtxgen.localconfig] LoadTopLevel -> Loaded configuration: /etc/opt/omnicube/hyperledger/configtx.yaml
2026-10-01 13:15:29.843 UTC 0001 INFO [common.tools.configtxgen] main -> Loading configuration
2026-10-01 13:15:29.844 UTC 0002 INFO [common.tools.configtxgen.localconfig] completeInitialization -> orderer type: etcdraft
2026-10-01 13:15:29.844 UTC 0003 INFO [common.tools.configtxgen.localconfig] completeInitialization -> Orderer.EtcdRaft.Options unset, setting to tick_interval:"500ms" election_tick:10 heartbeat_tick:1 max_inflight_blocks:5 snapshot_interval_size:16777216
2026-10-01 13:15:29.844 UTC 0004 INFO [common.tools.configtxgen.localconfig] LoadTopLevel -> Loaded configuration: /etc/opt/omnicube/hyperledger/configtx.yaml
\nRun oc-install "Admit a new node" on an existing node and hit enter when finished...Serving HTTP on :: port 8000 (http://[::]:8000/) ...
Ne validez pas encore: passez à l'étape suivante sur un node existant.
3.5.2 Sur un node existant
Sur un node déjà membre de l'OmniCube, lancez oc-install et choisissez 3) Admit a new node. Le script récupère la configuration courante du canal depuis son propre peer, puis demande l'adresse IP du nouveau node:
Enter the IP of the new node: 10.155.252.18
Il télécharge alors les descripteurs d'organisation publiés par le nouveau node à l'étape précédente, construit une mise à jour de la configuration du canal (ajout de l'organisation dans le groupe Application, dans le groupe Orderer, et ajout du nouveau consenter Raft), la signe avec les identités administrateur orderer et peer de ce node, puis la soumet:
consenter admitted and verified
Ce message ne s'affiche que lorsque le nouveau consenter Raft est effectivement retrouvé dans la configuration committée du canal, pas seulement accepté pour ordonnancement.
3.5.3 Retour sur le nouveau node
Une fois l'admission confirmée sur le node existant, revenez au terminal du nouveau node et validez l'invite laissée en attente. Le script demande alors l'adresse IP de ce node admettant:
Enter the IP of the admitting node: 10.155.252.14
Il y récupère la configuration courante du canal ainsi que le bloc de genèse (bloc 0), démarre l'orderer local et le fait rejoindre le canal, démarre le peer local et le fait rejoindre le canal à partir du bloc de genèse récupéré, puis installe le chaincode omnicube et l'approuve à la séquence déjà committée par les autres nodes (aucun nouveau commit n'est nécessaire, la définition existe déjà sur le canal):
Chain code already defined at sequence 1, adopting it.
Comme pour le premier node, les services omnicube-chaincode et omnicube-daemon sont démarrés en dernier. Vérifiez l'état des services avec la même commande svcs -xv "*omnicube*" que pour le premier node.
3.6 Installation de l'interface graphique
Il manque encore l'interface graphique en tant que telle.
~# pkg install hypercube/gui
Packages to install: 1
Services to change: 2
Create boot environment: No
Create backup boot environment: No
Planning linked: 0/1 done; 1 working: zone:test-lipkg-second
Linked image 'zone:test-lipkg-second' output:
`
Planning linked: 1/1 done
DOWNLOAD PKGS FILES XFER (MB) SPEED
Completed 1/1 28741/28741 46.1/46.1 544k/s
Downloading linked: 0/1 done; 1 working: zone:test-lipkg-second
Downloading linked: 1/1 done
PHASE ITEMS
Installing new actions 32888/32888
Updating package state database Done
Updating package cache 0/0
Updating image state Done
Creating fast lookup database Done
Reading search index Done
Updating search index 1/1
Executing linked: 0/1 done; 1 working: zone:test-lipkg-second
Executing linked: 1/1 done
Updating package cache 3/3
Il ne reste plus qu'à démarrer le service de l'interface graphique.
~# svcadm enable svc:/hypercube/gui:default
~# svcs -xv *"hypercube"*
svc:/hypercube/gui:default (node_guid daemon and vue server)
State: online since May 14, 2025 at 10:01:01 PM UTC
See: man -M /usr/share/man -s 8 node_gui
See: https://www.efit-partners.eu/
See: /var/svc/log/hypercube-gui:default.log
Impact: None.
svc:/hypercube/hypercubed:default (OmniCube daemon)
State: online since May 14, 2025 at 09:54:26 PM UTC
See: man -M /usr/share/man -s 8 hypercubed
See: https://www.efit-partners.eu/
See: /var/svc/log/hypercube-hypercubed:default.log
Impact: None.
svc:/hypercube/ethereum:geth (SMF for go-ethereum.)
State: online since May 14, 2025 at 09:51:56 PM UTC
See: man -M /usr/share/man -s 8 geth
See: https://geth.ethereum.org/
See: /var/svc/log/hypercube-ethereum:geth.log
Impact: None.
L'interface graphique est désormais accessible via l'adresse IP du node ou de la zone sur lequel elle a été installée.
Chapter 4
Intégration Active Directory
4.1 Introduction
OmniOS peut s'intégrer dans un domaine Active Directory en tant que serveur de fichiers SMB et utiliser un serveur Active Directory à la fois pour l'authentification de connexion, pour fournir des services de noms aux comptes utilisateurs et pour le contrôle d'accès basé sur les rôles (RBAC).
4.2 Prérequis
Pour pouvoir gérer la plupart des fonctionnalités listées ci-dessus dans l'AD, il est nécessaire de modifier le schéma de ce dernier en utilisant ADextend.ldif.
L'explication pour modifier un schéma AD dépasse le cadre du présent document.
4.3 Préparation du système
4.3.1 DNS
Utilisez votre AD comme serveur DNS ou un server qui redirige les requêtes de votre domaine ad-domain.intra et _msdcs.ad-domain.intra.
# cat <<CFG_END >/etc/resolv.conf
nameserver 10.1.1.1
domain ad-domain.intra
search ad-domain.intra
CFG_END
4.3.2 NTP
Activez NTP, car une heure précise est essentielle pour le fonctionnement de Kerberos. La synchronisation peut être forcée en cas de forte différence de temps.
~$ pfexec su -
~#pkg install pkg:/service/network/ntpsec
~# ntpdate -b 10.0.0.1
~# svcadm enable network/ntp
4.3.3 LDAP
Le plugin OmniOS Active Directory ne prend pas en charge l'intégration complète de la connexion. Nous devons donc configurer un utilisateur ldap proxy, puis configurer le client LDAP pour activer les connexions Unix avec des comptes LDAP. L'utilisateur AD proxy doit disposer des droits appropriés pour lire les entrées du compte utilisateur.
- Ajouter le root certificate (root CA) qui a signé le certificat du serveur LDAP ou de l'Active Directory.
~$ pfexec certutil -A -d /var/ldap -i ~/ldap/ca-ca-1.crt -n "CA Root CA" -t "CT,,"
- Les utilisateurs devant pouvoir ouvrir une session shell, devront avoir les attributs suivants:
- gidNumber: 1 (Group other générique sous OmniOS)
- uidNumber: >= 2000 (Par convention)
- loginShell: /bin/bash
- unixHomeDirectory: Pour Active Directory, /home/[SAMAccountName] dans le cas d'utilisation d'autoFS ou /export/home/[SAMAccountName] autrement. Pour un serveur LDAP, uid.
- Dans le cas d'une utilisation d'Active Directory, configurez maintenant le client LDAP
~# ldapclient manual \
-a credentialLevel=proxy \
-a authenticationMethod=tls:simple \
-a proxyDN="cn=omnios ldap,cn=Users,dc=ad-domain,dc=intra" \
-a proxyPassword={NS1}81507fc87bf1d4bd3d7c31c9ce3d4516 ou Mot de passe en clair \
-a defaultSearchBase=dc=ad-domain,dc=intra \
-a domainName=AD-DOMAIN.INTRA \
-a "followReferrals=false" \
-a "defaultServerList=IPs ou FQDN" \
-a attributeMap=group:userpassword=userPassword \
-a attributeMap=group:memberuid=memberUid \
-a attributeMap=group:gidnumber=gidNumber \
-a attributeMap=passwd:uid=SAMAccountName \
-a attributeMap=shadow:uid=sAMAccountName \
-a attributeMap=passwd:gecos=cn ou gecos \
-a attributeMap=passwd:gidnumber=gidNumber \
-a attributeMap=passwd:uidnumber=uidNumber \
-a attributeMap=passwd:homedirectory=unixHomeDirectory ou HomeDirectory \
-a attributeMap=passwd:loginshell=loginShell \
-a attributeMap=shadow:shadowflag=shadowFlag \
-a attributeMap=shadow:userpassword=userPassword \
-a objectClassMap=group:posixGroup=group \
-a objectClassMap=passwd:posixAccount=user \
-a objectClassMap=shadow:shadowAccount=user \
-a 'serviceSearchDescriptor=passwd:dc=ad-domain,dc=intra?sub?(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=CN=solaccess,ou=System Grou
ps,ou=Solaris,ou=SysAdmins,dc=ad-domain,dc=intra))' \
-a 'serviceSearchDescriptor=shadow:dc=ad-domain,dc=intra?sub?(&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=CN=solaccess,ou=System Grou
ps,ou=Solaris,ou=SysAdmins,dc=ad-domain,dc=intra))' \
-a serviceSearchDescriptor=group:dc=ad-domain,dc=intra?sub \
-a serviceSearchDescriptor=prof_attr:ou=Solaris,ou=SysAdmins,dc=ad-domain,dc=intra?sub \
-a serviceSearchDescriptor=auth_attr:ou=Solaris,dc=ad-domain,dc=intra?sub
- Assurez-vous que /etc/nsswitch.conf ne contient que des entrées ldap pour passwd et group, ainsi que dns pour hosts:
# ...
passwd: files ldap ad
group: files ldap ad
# ...
hosts: files dns
ipnodes: files dns
# ...
auth_attr: files ldap
prof_attr: files ldap
project: files ldap
# ...
4.3.4 Kerberos
- Installez le support Kerberos
~# pkg install system/security/kerberos-5
-
Éditer le fichier de configuration Kerberos /etc/krb5/krb5.conf comme suit tout en adaptant les adresses IP et noms de domaine
...
[libdefaults]
default_realm = AD-DOMAIN.INTRA
verify_ap_req_nofail = false
[realms]
___default_realm___ = {
kdc = 10.0.0.11
kdc = 10.0.0.12
kdc = 10.0.0.11
admin_server = 10.0.0.11
}
[domain_realm]
.ad-domain.intra = AD-DOMAIN.INTRA
ad-domain.intra = AD-DOMAIN.INTRA
[logging]
default = FILE:/var/krb5/kdc.log
kdc = FILE:/var/krb5/kdc.log
kdc_rotate = {
# How often to rotate kdc.log. Logs will get rotated no more
# often than the period, and less often if the KDC is not used
# frequently.
period = 1d
# how many versions of kdc.log to keep around (kdc.log.0, kdc.log.1, ...)
versions = 10
}
[appdefaults]
kinit = {
renewable = true
forwardable= true
}
-
Configurez Kerberos pour MS Active Directory (ms_ad). L'option -C permet de spécifier l'enregistrement dans un OU autre que CN=Computers.
~# kclient -T ms_ad -a [USER_WITH_DOMAIN_JOIN_PERMS] -C "ou=OmnicubeServers,ou=Servers"
~# kinit -V administrator
4.3.5 PAM
Enfin, PAM doit être configuré pour utiliser kerberos lorsque cela est approprié via /etc/pam.conf. Les entrées sont probablement déjà présentes, il vous suffit de supprimer le caractère de commentaire #1.
login auth sufficient pam_krb5.so.1
krlogin auth required pam_krb5.so.1
krsh auth required pam_krb5.so.1
ktelnet auth required pam_krb5.so.1
other auth sufficient pam_krb5.so.1
4.3.6 Utilisateurs
Pour chaque utilisateur (SAMAccountName ou uid), il y a lieu de créer un home directory et d'y copier les skeletons.
~$ pfexec su -
~# mkdir /export/home/{SAMAccountName}
~# cp -p /etc/skel/.[a-z]* /export/home/{SAMAccountName}
~# chown -R {SAMAccountName}:other /export/home/{SAMAccountName}
Éventuellement, l'utilisateur peut se voir attribuer les droits d'administrateur (root) par ajout de
[SAMAccountName]::::type=normal;profiles=Primary Administrator
à un fichier nommé librement dans le directory /etc/user_attr.d/
~$ pfexec vi /etc/user_attr.d/
4.3.7 SMB
Activer le partage de fichiers SMB.
Pour nous assurer que nous avons les mêmes identifiants utilisateur partout, nous voulons les conserver dans Active Directory.
~# svccfg -s svc:/system/idmap setprop config/directory_based_mapping=astring: idmu
~# svcadm refresh svc:/system/idmap
~# sharectl set -p lmauth_level=5 smb
~# sharectl set -p system_comment=« My Funny Fileserver » smb
~# svcadm enable -r smb/server
4.3.8 Tests
Votre serveur OmniOS devrait maintenant être accessible en tant que serveur de fichiers smb depuis les clients Windows, permettant ainsi l'accès SSO.
Sur la ligne de commande OmniOS, vous devriez voir tous les comptes utilisés avec getent passwd.
4.4 Multifactor Authentication (MFA)
Une fois OmniOS connecté à un directory quelqu'il soit, c'est ce dernier qui prendra en charge le Multifactor Authentication. Bien que nombre de produit implémente leur propre système d'authentification voir un MFA indépendant, cette approche est délétère simplement parce qu'elle nécessite de maintenir les comptes utilisateurs dans plusieurs produits différents. L'OmniCube n'a pas vocation à se substituer à un directory mais bien à l'utiliser pour l'authentification.
Chapter 5
Configuration d'une console série
5.1 Introduction
De nombreuses cartes mères modernes prennent en charge l'accès à une console à distance. Intel appelle sa solution "Baseboard Management Controller" (BMC). HPE la nomme "Integrated Lights-Out" (iLO), ...
Outre leur interface Web conviviale, BMC/iLO offrent également une fonctionnalité appelée SOL SSH. Celle-ci permet d'accéder au premier port série (ttya/com1) via ssh. Une fois configurée, vous pouvez accéder aux paramètres du BIOS et à d'autres éléments liés au démarrage, tels que la sélection du support de démarrage, via ssh, ce qui est très pratique. Mais mieux encore, vous pouvez également configurer OmniOS pour fournir un accès à une console série via ce chemin. Ce qui constitue une excellente option de récupération.
Les exemples suivants sont des captures d'écran d'une carte mère Intel S2600ST utilisant donc BMC.
5.2 Configuration du BMC
Configurer le port SSH SOL
Figure 5.1: Configuration du port SSH SOL
Activer SSH SOL
Figure 5.2: Activation du port SSH SOL
5.3 Paramètres BIOS
Activer le port série
Figure 5.3: Activation du port série
Activer la redirection de la console.
Comme nous exécutons la console sur une interface Ethernet dédiée, SOL est uniquement activé à cet endroit.
Figure 5.4: Activation du port série
5.4 Configurer la console série dans OmniOS
Configurer les ports ttya.
~# sttydefs -r ttya
~# sttydefs -a ttya -i '115200 hupcl opost onlcr ofill' -f '115200'
Configurez une nouvelle instance de connexion à la console
~# svccfg -s svc:/system/console-login delete -f ttya
~# svccfg -f - <<EOF
select svc:/system/console-login
add ttya
select svc:/system/console-login:ttya
addpg ttymon application
setprop ttymon/device = astring: /dev/term/a
setprop ttymon/terminal_type = astring: xterm
setprop ttymon/label = astring: ttya
setprop ttymon/modules = astring: ldterm,ttcompat
setprop ttymon/nohangup = boolean: true
setprop ttymon/prompt = astring: "`uname -n` ttya login:"
addpg general framework
EOF
Activez les nouvelles connexions à la console
~# svcadm enable svc:/system/console-login:ttya
Autorisez les connexions root sur toutes les consoles
~# perl -i -p -e 's/\s*(CONSOLE.+)/# $1/' /etc/default/login
5.5 Configurez le boot loader pour utiliser la console série
Vous pouvez également configurer le chargeur de démarrage d'Omnios pour communiquer via la série:
~# cat >/boot/conf.d/serial <<EOF
boot_multicons="YES"
boot_serial="YES"
comconsole_speed="115200"
os_console="text"
console="ttya,text"
ttya-mode="115200,8,n,1,-"
EOF
Enfin effectuez un update du boot archive et redémarrez
~# bootadm update-archive
~# init 6
5.6 Tests
.
Vous pouvez maintenant vous connecter en ssh sur la console
~# ssh -p 66 server-console-ip
5.7 Redimentionnement de la console
Si vous avez essayé vim sur votre nouvelle console série, vous avez probablement été déçu: l'écran s'est affiché de manière confuse.
Cela s'explique par le fait que, via la connexion à la console série, stty ne semble pas être correctement informé de la taille de l'écran et de ses modifications. Exécutez stty et il indiquera que le nombre de lignes et de colonnes est égal à 0, ce qui n'est pas idéal.
Il existe toutefois un moyen de résoudre ce problème. Le plus simple est de taper resize pour régler le problème... Malheureusement, la commande resize fait partie du paquet xterm qui n'est probablement pas installé sur votre GZ OmniOS. Si vous utilisez bash, il existe toutefois une autre solution en passant par une petite fonction shell que vous n'aurez qu'à mettre dans votre profile.
# .bash_profile
if [ ! -f /usr/bin/resize ]; then
resize() {
old=$(stty -g)
stty -echo
printf '\033[18t'
IFS=';' read -d t _ rows cols _
stty "$old"
stty cols "$cols" rows "$rows"
}
fi
# resize terminal
if [ "$(tty)" = '/dev/term/a' ]; then
resize
fi
Footnotes:
1Voir man pam_krb5 pour plus de détails