Accéder au contenuNavigation Accéder à la page : page précédente [raccourci clavier p] / page suivante [raccourci clavier n]
documentation.suse.com / Déploiement de SLE Micro à l'aide d'images disques brutes sur des disques DASD IBM Z

Déploiement de SLE Micro à l'aide d'images disques brutes sur des disques DASD IBM Z

Date de publication : 12 déc 2024
CONTENU

SLE Micro fournit des images brutes (également appelées images prédéfinies) qui peuvent être déployées directement sur le stockage de votre périphérique.

MOTIF

Cet article fournit des instructions étape par étape concernant le déploiement de SLE Micro sur une machine IBM Z.

EFFORT

La lecture de l'article prend environ 20 minutes.

OBJECTIF

SLE Micro est déployé correctement sur votre système.

CONDITIONS REQUISES
  • Un disque avec Linux en cours d'exécution.

  • Un disque sur lequel vous déployez l'image brute et sur lequel SLE Micro sera exécuté.

  • Disque qui sert de support de configuration.

1 À propos des images prédéfinies

Les images prédéfinies sont des représentations prêtes à l'emploi d'un système d'exploitation en cours d'exécution. Elles ne s'installent pas de façon traditionnelle à l'aide d'un programme d'installation, mais sont copiées sur le disque dur de l'hôte cible. Cette rubrique traite des informations de base concernant ces images prédéfinies.

Les images prédéfinies sont destinées à être configurées au premier démarrage à l'aide des outils fournis dans les images. Le chargeur de démarrage détecte le premier démarrage comme décrit à la Section 1.2, « Détection du premier démarrage ». Chaque image est livrée avec des sous-volumes montés par défaut, qui peuvent être modifiés lors de la configuration au premier démarrage. Pour plus de détails sur les sous-volumes, reportez-vous à la Section 1.1, « Partitionnement par défaut ».

1.1 Partitionnement par défaut

Les images prédéfinies sont fournies avec un schéma de partitionnement par défaut. Vous pouvez le modifier lors du premier démarrage à l'aide de Ignition ou Combustion.

Important
Important : Btrfs est obligatoire pour le système de fichiers racine

Si vous avez l'intention de modifier le schéma de partitionnement par défaut, le système de fichiers racine doit être Btrfs.

Chaque image comporte les sous-volumes suivants :

/home
/root
/opt
/srv
/usr/local
/var

Le répertoire /etc est monté en tant qu'overlayFS et le répertoire supérieur est monté dans /var/lib/overlay/1/etc/

Vous pouvez reconnaître les sous-volumes montés par défaut par l'option x-initrd.mount dans /etc/fstab. Les autres sous-volumes ou partitions doivent être configurés par les outils Ignition ou Combustion.

1.2 Détection du premier démarrage

La configuration du déploiement s'exécute au premier démarrage uniquement. Pour faire la distinction entre le premier démarrage et les suivants, le fichier d'indicateur /boot/writable/firstboot_happened est créé une fois le premier démarrage terminé. Si le fichier est absent du système de fichiers, l'attribut ignition.firstboot est transmis à la ligne de commande du kernel et ainsi, Ignition et Combustion sont déclenchés pour s'exécuter (dans le fichier initrd). Une fois le premier démarrage terminé, le fichier d'indicateur /boot/writable/firstboot_happened est créé.

Note
Note : le fichier d'indicateur est toujours créé

Même si la configuration peut échouer en raison de fichiers de configuration incorrects ou manquants, le fichier d'indicateur /boot/writable/firstboot_happened est créé.

1.2.1 Reconfiguration forcée du système lors d'un démarrage ultérieur

Si vous devez reconfigurer votre système après le premier démarrage, vous pouvez forcer la reconfiguration au démarrage suivant. Deux options s'offrent à vous.

  • Vous pouvez transmettre l'attribut ignition.firstboot=1 à la ligne de commande du kernel.

  • Vous pouvez supprimer le fichier d'indicateur /boot/writable/firstboot_happened.

2 Déploiement de SLE Micro

La procédure de déploiement de SLE Micro comprend trois phases. Ne sautez aucune des phases et suivez l'ordre indiqué ci-dessous.

  1. Activation des disques DASD : avant de démarrer le déploiement, vous devez vous assurer que tous les disques à utiliser sont disponibles et actifs. Pour plus d'informations, reportez-vous à la Section 3, « Préparation de la machine ».

  2. Préparation d'un périphérique de configuration : pour configurer le réseau, ajouter des utilisateurs et enregistrer le système, préparez la configuration conformément aux instructions fournies à la Section 4, « Préparation du disque de configuration ».

  3. Téléchargement de l'image de SLE Micro et déploiement sur le disque. Pour plus d'informations, reportez-vous à la Section 5, « Déploiement de l'image disque brute sur le disque DASD ».

3 Préparation de la machine

Avant de commencer à déployer SLE Micro, vous devez vérifier si les trois disques DASD nécessaires sont actifs. Pour vérifier l'état des disques, exécutez la commande :

# lsdasd

Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks 
================================================================================ 
0.0.0100  active    dasda     94:0    ECKD         4096   30720MB   7864380 
0.0.0101  active    dasdc     94:8    ECKD         4096   20480MB   5243040
0.0.0102  active    dasdb     94:4    ECKD         4096   5120MB    1310760

Le disque de 5 Go sera utilisé comme périphérique de configuration et le disque de 20 Go sera le disque sur lequel SLE Micro sera déployé.

Si vous ne voyez pas les disques dans la sortie de la commande, vous devez les activer. Pour ce faire, procédez de la façon suivante :

  1. Exécutez la commande lszdev dasd pour afficher la liste complète des périphériques :

    # lszdev dasd
    
    TYPE       ID        ON   PERS  NAMES 
    dasd-eckd  0.0.0100  yes  no    dasda 
    dasd-eckd  0.0.0101  no   no    
    dasd-eckd  0.0.0102  no   no   
    dasd-eckd  0.0.0190  no   no     
    dasd-eckd  0.0.019d  no   no     
    dasd-eckd  0.0.019e  no   no     
    dasd-eckd  0.0.0592  no   no
  2. Activez les disques à l'aide de la commande :

    # chzdev -eDISK_ID

    Par exemple, pour activer le disque 0.0.0101 :

    # chzdev -e 0.0.0101
  3. Vérifiez que les disques sont actifs dans la sortie de la commande lsdasd.

4 Préparation du disque de configuration

Astuce
Astuce : disque virtuel ou physique

Un disque virtuel peut être plus adapté aux déploiements de production, tandis qu'un disque physique convient mieux au développement.

Au cours du processus d'installation, vous pouvez transmettre une configuration complexe pour définir des utilisateurs, des répertoires ou pour fournir des clés SSH. Pour ce faire, créez un périphérique de configuration qui stocke une configuration complète. L'exemple de procédure suivant décrit comment créer un tel périphérique :

  1. Identifiez le disque de 5 Go :

    # lsdasd
    
    Bus-ID    Status    Name      Device  Type         BlkSz  Size      Blocks 
    ================================================================================ 
    0.0.0100  active    dasda     94:0    ECKD         4096   30720MB   7864380 
    0.0.0101  active    dasdc     94:8    ECKD         4096   20480MB   5243040
    0.0.0102  active    dasdb     94:4    ECKD         4096   5120MB    1310760

    Dans la sortie ci-dessus, la valeur Bus-ID du disque à utiliser comme périphérique de configuration est 0.0.0102. Utilisez la valeur de Bus-ID ou la taille du disque pour identifier le disque, car le nom du périphérique (/dev/dasdX) peut changer après chaque redémarrage.

  2. Formatez le disque. N'oubliez pas que le formatage supprime toutes les données sur ce disque.

    # dasdfmt -b 4096 -y -p /dev/dasdb
  3. Créez une partition :

    # parted /dev/dasdb mkpart ext2 0% 100%
  4. Formatez la partition :

    # mkfs.ext4 /dev/dasdb1
  5. Attribuez à la partition l'étiquette ignition :

    # e2label /dev/dasdb1 ignition
  6. Vérifiez le système de fichiers :

    # blkid
  7. Montez la partition :

    # mount /dev/dasdb1 /mnt
  8. Préparez la structure de répertoires pour Ignition et/ou Combustion. Pour Ignition :

    # mkdir -p  /mnt/ignition

    Pour Combustion :

    # mkdir -p /mnt/combustion
  9. Copiez votre clé SSH publique dans /mnt/combustion en tant que ssh_key.pub.

  10. Préparez la configuration comme décrit ci-après.

4.1 Configuration du déploiement de SLE Micro avec Combustion

Combustion est un module dracut qui vous permet de configurer votre système au premier démarrage. Vous pouvez utiliser Combustion, par exemple, pour modifier les partitions par défaut, définir des mots de passe utilisateur, créer des fichiers ou installer des paquets.

4.1.1 Comment fonctionne Combustion ?

Combustion est appelé après la transmission de l'argument ignition.firstboot à la ligne de commande du kernel. Combustion lit un fichier fourni nommé script, exécute les commandes incluses dans le script et modifie ainsi le système de fichiers. Si script inclut l'indicateur réseau, Combustion tente de configurer le réseau. Une fois /sysroot monté, Combustion tente d'activer tous les points de montage à l'emplacement /etc/fstab, puis invoque la commande transactional-update pour appliquer d'autres modifications, par exemple, définir un mot de passe root ou installer des paquets.

Le fichier de configuration script doit résider dans le sous-répertoire combustion du support de configuration étiqueté combustion. La structure de répertoires doit se présenter comme suit :

<root directory>
└── combustion
    └── script
    └── other files
Astuce
Astuce : utilisation de Combustion avec Ignition

Combustion peut être utilisé avec Ignition. Si c'est ce que vous avez l'intention de faire, étiquetez votre support de configuration ignition et incluez le répertoire ignition contenant le fichier config.ign dans votre structure de répertoires comme indiqué ci-dessous :

<root directory>
└── combustion
    └── script
    └── other files
└── ignition
    └── config.ign

Dans ce scénario, Ignition s'exécute avant Combustion.

4.1.2 Exemples de configuration Combustion

4.1.2.1 Fichier de configuration script

Le fichier de configuration script est un ensemble de commandes qui sont analysées et exécutées par Combustion dans un shell transactional-update. Cet article fournit des exemples de tâches de configuration effectuées par Combustion.

Important
Important : incluez la déclaration de l'interpréteur

Lorsque le fichier script est interprété par le shell, commencez toujours le fichier avec la déclaration de l'interpréteur sur la première ligne. Par exemple, dans le cas de Bash :

#!/bin/bash

Pour vous connecter à votre système, indiquez au moins le mot de passe root. Toutefois, il est recommandé d'établir l'authentification à l'aide de clés SSH. Si vous devez utiliser un mot de passe root, veillez à ce que sa configuration soit sécurisée. Pour un mot de passe généré de façon aléatoire, utilisez au moins 10 caractères. Si vous créez votre mot de passe manuellement, utilisez même plus de 10 caractères et combinez des lettres majuscules, minuscules et des chiffres.

4.1.2.1.1 Configuration réseau

Pour configurer et utiliser la connexion réseau lors du premier démarrage, ajoutez l'instruction suivante à script :

# combustion: network

Cette instruction transmet l'argument rd.neednet=1 à dracut. La configuration réseau utilise par défaut DHCP. Si vous avez besoin d'une autre configuration réseau, procédez comme indiqué à la Section 4.1.2.1.2, « Intégration de modifications dans l'environnement initramfs ».

En l'absence de cette instruction, le système reste configuré sans connexion réseau.

4.1.2.1.2 Intégration de modifications dans l'environnement initramfs

Vous devrez peut-être apporter des modifications à l'environnement initramfs, par exemple, pour rédiger une configuration réseau personnalisée pour NetworkManager à l'emplacement /etc/NetworkManager/system-connections/. Pour ce faire, utilisez l'instruction prepare.

Par exemple, pour créer une connexion avec une adresse IP statique et configurer DNS :

#!/bin/bash
# combustion: network prepare
set -euxo pipefail
          
nm_config() {
  umask 077 # Required for NM config
  mkdir -p /etc/NetworkManager/system-connections/
  cat >/etc/NetworkManager/system-connections/static.nmconnection <<-EOF
  [connection]
  id=static
  type=ethernet
  autoconnect=true
          
  [ipv4]
  method=manual
  dns=192.168.100.1
  address1=192.168.100.42/24,192.168.100.1
EOF
}
          
if [ "${1-}" = "--prepare" ]; then
  nm_config # Configure NM in the initrd
  exit 0
fi
          
# Redirect output to the console
exec > >(exec tee -a /dev/tty0) 2>&1
          
  nm_config # Configure NM in the system
  curl example.com
# Leave a marker
echo "Configured with combustion" > /etc/issue.d/combustion
4.1.2.1.3 Partitionnement

Les images brutes SLE Micro sont fournies avec un schéma de partitionnement par défaut, comme décrit à la Section 1.1, « Partitionnement par défaut ». Vous souhaitez peut-être utiliser un autre partitionnement. L'ensemble suivant d'exemples d'extraits de code déplace /home vers une autre partition.

Note
Note : réalisation de modifications en dehors des répertoires inclus dans les instantanés

Le script suivant effectue des modifications qui ne sont pas incluses dans les instantanés. Si le script échoue et que l'instantané est ignoré, certaines modifications restent visibles et ne peuvent pas être annulées, par exemple, les modifications apportées au périphérique /dev/vdb.

L'extrait de code suivant crée un schéma de partitionnement GPT avec une seule partition sur le périphérique /dev/vdb :

sfdisk /dev/vdb <<EOF
label: gpt
type=linux
EOF

partition=/dev/vdb1

La partition utilise le format Btrfs :

wipefs --all ${partition}
mkfs.btrfs ${partition}

L'éventuel contenu de /home est déplacé vers le nouvel emplacement du dossier /home par l'extrait de code suivant :

mount /home
mount ${partition} /mnt
rsync -aAXP /home/ /mnt/
umount /home /mnt

L'extrait de code ci-dessous supprime une ancienne entrée à l'emplacement /etc/fstab et crée une nouvelle entrée :

awk -i inplace '$2 != "/home"' /etc/fstab
echo "$(blkid -o export ${partition} | grep ^UUID=) /home btrfs defaults 0 0" >>/etc/fstab
4.1.2.1.4 Création d'utilisateurs

Étant donné que certains services, tels que Cockpit, nécessitent une connexion à l'aide d'un utilisateur non-root, définissez au moins un utilisateur sans privilèges ici. Vous pouvez également créer ce type d'utilisateur à partir d'un système en cours d'exécution, comme décrit à la Section 6.2, « Ajout d'utilisateurs ».

Pour ajouter un nouveau compte utilisateur, créez d'abord une chaîne de hachage qui représente le mot de passe de l'utilisateur. Utilisez la commande openssl passwd -6.

Après avoir obtenu le hachage du mot de passe, ajoutez les lignes suivantes au script :

mount /home
useradd -m EXAMPLE_USER
echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.5 Définition d'un mot de passe pour root

Avant de définir le mot de passe root, générez un hachage pour celui-ci, par exemple, à l'aide de la commande openssl passwd -6. Pour définir le mot de passe, ajoutez la ligne suivante au fichier script :

echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.6 Ajout de clés SSH

L'extrait de code suivant crée un répertoire pour stocker la clé SSH de l'utilisateur root, puis copie la clé SSH publique située sur le périphérique de configuration dans le fichier authorized_keys.

mkdir -pm700 /root/.ssh/
cat id_rsa_new.pub >> /root/.ssh/authorized_keys
Note
Note

Le service SSH doit être activé pour le cas où vous auriez besoin d'utiliser la connexion à distance via SSH. Pour plus d'informations, reportez-vous à la Section 4.1.2.1.7, « Activation de services ».

4.1.2.1.7 Activation de services

Pour activer des services système, par exemple le service SSH, ajoutez la ligne suivante à script :

systemctl enable sshd.service
4.1.2.1.8 Installation de paquets
Important
Important : une connexion réseau et l'enregistrement de votre système peuvent être nécessaires

Certains paquets pouvant nécessiter un abonnement supplémentaire, vous devrez peut-être enregistrer votre système au préalable. Vous devrez peut-être également disposer d'une connexion réseau pour installer des paquets supplémentaires.

Lors de la configuration du premier démarrage, vous pouvez installer des paquets supplémentaires sur votre système. Par exemple, vous pouvez installer l'éditeur vim en ajoutant :

zypper --non-interactive install vim-small
Note
Note

N'oubliez pas que vous ne pourrez plus utiliser zypper une fois la configuration terminée et le système configuré démarré. Pour effectuer des changements ultérieurement, vous devrez utiliser la commande transactional-update afin de créer un instantané modifié.

4.1.2.2 Exemple complet du fichier script

Le script suivant fournit tous les paramètres susceptibles de vous servir de guides concernant la façon d'écrire votre propre configuration de Combustion. L'exemple ne nécessite aucune configuration supplémentaire d'Ignition.

    #!/bin/bash
    # combustion: network prepare
    
    
    set -euxo pipefail
    
    ## The OSA subchannels to enable
    ZNET_SUBCHANNELS=0.0.1000,0.0.1001,0.0.1002
    
    ## Network information to configure
    IPADDRESS="10.144.64.155/24" ## Formet is ipaddress/cidr
    GATEWAY="10.144.64.254"
    NAMESERVERS="10.144.53.53;10.144.53.54" ## A semicolon-separated list of name servers
    
    ## Hostname information
    NODE_HOSTNAME="micro6"
    
    ## Add password for root user
    ## Use either 'openssl passwd -6' or 'mkpasswd --method=sha-512' to encrypt the password.
    ROOT_USER_PASSWORD='PASSWORD_HASH'
    SSH_ROOT_PUBLIC_KEY=ssh_key.pub
    
    ## Add a regular user, because root login may be disallowed in some services.
    CREATE_NORMAL_USER=user ## Replace the "user" with a desired username here.
    NORMAL_USER_PASSWORD='PASSWORD_HASH'
    SSH_USER_PUBLIC_KEY=ssh_key.pub
    
    ## Register to SUSE Customer Center and install additional packages
    REG_EMAIL='tux@suse.com' ## Email address for product registration
    SLMICRO_REGCODE='REGISTRATIONCODE' ## A registration code required to install additional packages
    ADDITIONAL_PACKAGES='' ## A space separated list of additional packages to install
    
    
    nm_config() {
      umask 077 # Required for Network Manager configuration
      mkdir -p /etc/NetworkManager/system-connections/
      cat >'/etc/NetworkManager/system-connections/Wired connection 1.nmconnection' <<EOF
      [connection]
      id=static
      type=ethernet
      autoconnect=true
    
      [ipv4]
      method=manual
      address1=$IPADDRESS
      gateway=$GATEWAY
      dns=$NAMESERVERS
    EOF
    }
    
    if [ "${1-}" = "--prepare" ]; then
      # Configure Network Manager in the initrd
      nm_config
      # Enable OSA network devices
      chzdev qeth $ZNET_SUBCHANNELS -ep
      chzdev qeth $ZNET_SUBCHANNELS -e    
      exit 0
    fi
    
    
    
    ## Post output on stdout
    exec > >(exec tee -a /dev/ttyS0) 2>&1
    
    ## Set hostname
    echo $NODE_HOSTNAME > /etc/hostname
    
    ## Set root password
    echo root:$ROOT_USER_PASSWORD | chpasswd -e
    ## Add ssh public key as authorized key for the root user
    mkdir -pm700 /root/.ssh/
    cat $SSH_ROOT_PUBLIC_KEY >> /root/.ssh/authorized_keys
    
    ## Mount /var and /home so user can be created smoothly
    if [ "$CREATE_NORMAL_USER" ]
    then
      mount /var && mount /home
    fi
    ## User creation
    if [ "$CREATE_NORMAL_USER" ]
    then
      echo "User creation is requested, creating user."
      useradd -m $CREATE_NORMAL_USER -s /bin/bash -g users
      echo $CREATE_NORMAL_USER:$NORMAL_USER_PASSWORD | chpasswd -e
      echo $CREATE_NORMAL_USER "ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers.d/adminusers
      mkdir -pm700 /home/$CREATE_NORMAL_USER/.ssh/
      chown -R $CREATE_NORMAL_USER:users /home/$CREATE_NORMAL_USER/.ssh/
      cat $SSH_USER_PUBLIC_KEY >> /home/$CREATE_NORMAL_USER/.ssh/authorized_keys
      echo "Requested user has been created, requested password has been set."
    else
      echo "No user will be created"
    fi
    
    # Configure NM in the system
    nm_config
    # Enable OSA network device
    chzdev qeth $ZNET_SUBCHANNELS -ep
    chzdev qeth $ZNET_SUBCHANNELS -e
    
    ## Enable services
    echo "Enabling services."
    systemctl enable cockpit.socket
    systemctl enable sshd
    
    ## Unmount var and home
    if [ "$CREATE_NORMAL_USER" ]
    then
      umount /var && umount /home
    fi  
    
    
    echo "Configured with Combustion at $(date)" > /etc/issue.d/combustion

4.2 Configuration du déploiement de SLE Micro avec Ignition

Ignition est un outil de provisioning qui vous permet de configurer un système en fonction de vos spécifications lors du premier démarrage.

4.2.1 Comment fonctionne Ignition ?

Lors du premier démarrage du système, Ignition est chargé en tant que partie de fichier initramfs et recherche un fichier de configuration dans un répertoire spécifique (sur un disque flash USB, mais vous pouvez aussi fournir une URL). Toutes les modifications sont effectuées avant que le kernel ne passe du système de fichiers temporaire au système de fichiers racine réel (avant que la commande switch_root ne soit émise).

Ignition utilise un fichier de configuration au format JSON nommé config.ign. Vous pouvez écrire la configuration manuellement ou utiliser l'application Web Fuel Ignition disponible à l'adresse https://ignite.opensuse.org pour la générer.

Important
Important

Fuel Ignition ne couvre pas encore l'ensemble du vocabulaire Ignition, et le fichier JSON obtenu peut nécessiter des ajustements manuels supplémentaires.

4.2.1.1 config.ign

Le fichier de configuration config.ign doit résider dans le sous-répertoire ignition du support de configuration, par exemple, une clé USB étiquetée ignition. La structure de répertoires doit se présenter comme suit :

<root directory>
└── ignition
    └── config.ign
Astuce
Astuce

Pour créer une image disque avec la configuration Ignition, vous pouvez utiliser l'application Web Fuel Ignition à l'adresse https://ignite.opensuse.org.

Le fichier config.ign contient plusieurs types de données : objets, chaînes, nombres entiers, attributs booléens et listes d'objets. Pour une spécification complète, reportez-vous au document Ignition specification v3.3.0.

L'attribut version est obligatoire et dans le cas de SLE Micro, sa valeur doit être définie sur 3.3.0 ou sur une version antérieure. Sinon, Ignition échoue.

Pour vous connecter à votre système en tant qu'utilisateur root, vous devez au moins inclure un mot de passe pour le répertoire root. Toutefois, il est recommandé d'établir un accès via des clés SSH. Lorsque vous configurez un mot de passe, veillez à ce qu'il soit sécurisé. Si vous utilisez un mot de passe généré de façon aléatoire, il doit comporter au moins 10 caractères. Si vous créez votre mot de passe manuellement, utilisez même plus de 10 caractères et combinez des lettres majuscules, minuscules et des chiffres.

4.2.2 Exemples de configuration Ignition

4.2.2.1 Exemples de configuration

Cette section fournit plusieurs exemples de configuration d'Ignition au format JSON intégré.

Important
Important

La Section 1.1, « Partitionnement par défaut » répertorie les sous-volumes montés par défaut lors de l'exécution de l'image prédéfinie. Si vous souhaitez ajouter un nouvel utilisateur ou modifier l'un des fichiers d'un sous-volume qui n'est pas monté par défaut, vous devez d'abord déclarer ce sous-volume afin qu'il soit monté également. Pour plus d'informations sur le montage de systèmes de fichiers, reportez-vous à la Section 4.2.2.1.1.3, « Attribut filesystems ».

Note
Note : l'attribut version est obligatoire

Chaque fichier config.fcc doit inclure la version 1.4.0 ou inférieure qui est ensuite convertie en spécification Ignition correspondante.

4.2.2.1.1 Configuration du stockage

L'attribut storage est utilisé pour configurer des partitions et RAID, définir des systèmes de fichiers, créer des fichiers, etc. Pour définir des partitions, utilisez l'attribut disks. L'attribut filesystems permet de formater des partitions et de définir des points de montage de partitions spécifiques. L'attribut files peut être utilisé pour créer des fichiers sur le système de fichiers. Chacun des attributs mentionnés est décrit dans les sections suivantes.

4.2.2.1.1.1 Attribut disks

L'attribut disks est une liste de périphériques qui vous permet de définir des partitions sur ces périphériques. L'attribut disks doit contenir au moins un élément device ; les autres attributs sont facultatifs. L'exemple suivant utilise un périphérique virtuel unique et divise le disque en quatre partitions :

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "disks": [
      {
        "device": "/dev/vda",
        "partitions": [
          {
            "label": "root",
            "number": 1,
            "typeGuid": "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709"
          },
          {
            "label": "boot",
            "number": 2,
            "typeGuid": "BC13C2FF-59E6-4262-A352-B275FD6F7172"
          },
          {
            "label": "swap",
            "number": 3,
            "typeGuid": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F"
          },
          {
            "label": "home",
            "number": 4,
            "typeGuid": "933AC7E1-2EB4-4F13-B844-0E14E2AEF915"
          }
        ],
        "wipeTable": true
      }
    ]
  }
}
4.2.2.1.1.2 Attribut raid

Le raid est une liste de réseaux RAID. Les attributs suivants de raid sont obligatoires :

level

Niveau du réseau RAID spécifique (linear, raid0, raid1, raid2, raid3, raid4, raid5, raid6)

devices

Liste des périphériques du réseau référencés par leurs chemins absolus

name

Nom qui sera utilisé pour le périphérique md

Par exemple :

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "raid": [
      {
        "devices": [
          "/dev/sda",
          "/dev/sdb"
        ],
        "level": "raid1",
        "name": "system"
      }
    ]
  }
}
4.2.2.1.1.3 Attribut filesystems

filesystems doit contenir les attributs suivants :

device

Chemin absolu d'accès au périphérique, généralement /dev/sda dans le cas d'un disque physique

format

Format du système de fichiers (Btrfs, Ext4, xfs, vfat ou swap)

Note
Note

Dans le cas de SLE Micro, le système de fichiers root doit être au format Btrfs.

L'exemple suivant illustre l'utilisation de l'attribut filesystems. Le répertoire /opt sera monté sur la partition /dev/sda1 qui utilise le format Btrfs. Le périphérique ne sera pas effacé.

Par exemple :

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda1",
        "format": "btrfs",
        "path": "/opt",
        "wipeFilesystem": false
      }
    ]
  }
}

Normalement, le répertoire privé d'un utilisateur standard se trouve dans le répertoire /home/USER_NAME. Étant donné que /home n'est pas monté par défaut dans initrd, le montage doit être explicitement défini pour que la création de l'utilisateur réussisse :

{
  "ignition": {
    "version": "3.1.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH"
        ]
      }
    ]
  },
  "storage": {
    "filesystems": [
      {
        "device": "/dev/sda3",
        "format": "btrfs",
        "mountOptions": [
          "subvol=/@/home"
        ],
        "path": "/home",
        "wipeFilesystem": false
      }
    ]
  }
}
4.2.2.1.1.4 Attribut files

Vous pouvez utiliser l'attribut files pour créer des fichiers sur votre machine. N'oubliez pas que pour créer des fichiers en dehors du schéma de partitionnement par défaut, vous devez définir les répertoires à l'aide de l'attribut filesystems.

Dans l'exemple suivant, un nom d'hôte est créé à l'aide de l'attribut files. Le fichier /etc/hostname sera créé avec le nom d'hôte sl-micro1 :

Important
Important

Gardez à l'esprit que JSON accepte les modes de fichier en nombres décimaux, par exemple, 420.

JSON :

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "files": [
      {
        "overwrite": true,
        "path": "/etc/hostname",
        "contents": {
          "source": "data:,sl-micro1"
        },
        "mode": 420
      }
    ]
  }
}
4.2.2.1.1.5 Attribut directories

L'attribut directories est une liste de répertoires qui seront créés sur le système de fichiers. L'attribut directories doit contenir au moins un attribut path.

Par exemple :

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "directories": [
      {
        "path": "/home/tux",
        "user": {
          "name": "tux"
        }
      }
    ]
  }
}
4.2.2.1.2 Administration des utilisateurs

L'attribut passwd est utilisé pour ajouter des utilisateurs. Étant donné que certains services, tels que Cockpit, nécessitent une connexion à l'aide d'un utilisateur non-root, définissez au moins un utilisateur sans privilèges ici. Vous pouvez également créer ce type d'utilisateur à partir d'un système en cours d'exécution, comme décrit à la Section 6.2, « Ajout d'utilisateurs ».

Pour vous connecter à votre système, créez un utilisateur root et un utilisateur ordinaire, puis définissez leur mot de passe. Vous devez hacher les mots de passe, par exemple à l'aide de la commande openssl :

openssl passwd -6

La commande crée un hachage du mot de passe que vous avez choisi. Utilisez ce hachage comme valeur de l'attribut password_hash.

Par exemple :

{
  "ignition": {
    "version": "3.0.0"
  },
  "passwd": {
    "users": [
      {
        "name": "root",
        "passwordHash": "PASSWORD_HASH",
        "sshAuthorizedKeys": [
          "ssh-rsa SSH_KEY_HASH USER@HOST"
        ]
      }
    ]
  }
}

L'attribut users doit contenir au moins un attribut name. ssh_authorized_keys est une liste de clés SSH pour l'utilisateur.

4.2.2.1.3 Activation des services systemd

Vous pouvez activer les services systemd en les spécifiant dans l'attribut systemd.

Par exemple :

{
  "ignition": {
    "version": "3.0.0"
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "sshd.service"
      }
    ]
  }
}
4.2.2.2 Conversion de fichiers au format YAML en JSON

JSON est un format de fichier universel pour le stockage de données structurées. Les applications, par exemple Ignition, l'utilisent pour stocker et récupérer leur configuration. Étant donné que la syntaxe de JSON est complexe et difficile à lire pour les humains, vous pouvez écrire la configuration dans un format plus convivial appelé YAML, puis la convertir en JSON.

4.2.2.2.1 Conversion de fichiers YAML au format JSON

L'outil qui convertit le vocabulaire spécifique à Ignition des fichiers YAML au format JSON est butane. Il vérifie également la syntaxe du fichier YAML pour détecter les erreurs potentielles dans la structure. Pour obtenir la dernière version de butane, ajoutez le dépôt suivant :

> sudo  zypper ar -f \
  https://download.opensuse.org/repositories/devel:/kubic:/ignition/openSUSE_Tumbleweed/ \
  devel_kubic_ignition

Remplacez openSUSE_Tumbleweed par l'un des éléments suivants (en fonction de votre distribution) :

  • 'openSUSE_Leap_$releasever'

  • 15.5

Vous pouvez maintenant installer l'outil butane :

> sudo  zypper ref && zypper in butane

Une fois l'installation terminée, vous pouvez appeler butane en exécutant :

>  butane -p -o config.ign config.fcc
  • config.fcc est le chemin d'accès au fichier de configuration YAML.

  • config.ign est le chemin d'accès au fichier de configuration JSON de sortie.

  • L'option de commande -p ajoute des sauts de ligne au fichier de sortie et le rend ainsi plus lisible.

5 Déploiement de l'image disque brute sur le disque DASD

Pour déployer SLE Micro sur le disque DASD de 20 Go, procédez comme suit :

  1. Téléchargez l'image disque brute à l'aide de wget ou de curl. Par exemple :

    > curl -L0kO
  2. Extrayez l'image :

    > unpack xz -dBUILD_IDENTIFICATION.raw.xz
  3. Exportez une variable qui recherche et stocke le nom du périphérique de 20 Go.

    # export SMDASD=$(lsdasd -s | grep 20480MB | tr -s [:blank:] | cut -d' ' -f3)
  4. Formatez le disque :

    • Si le disque est formaté pour la première fois :

      # dasdfmt -b 4096 -y -p /dev/$SMDASD
    • Si le disque a déjà été formaté précédemment :

      # dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
  5. Copiez l'image disque brute sur le disque (le nom du périphérique est /dev/dasdc dans notre cas) :

    dd if=IMAGE_NAME.raw status=progress  of=/dev/dasdc bs=4k
  6. Arrêtez l'instance Linux en cours d'exécution :

    # init 0
  7. Démarrez SLE Micro en lançant le second minidisque DASD sur un terminal x3270 :

    # ipl 101

6 Étapes post-déploiement

6.1 Enregistrement de SLE Micro à partir de la CLI

Si votre système n'a pas été enregistré au cours du processus de déploiement à l'aide du script Combustion, vous pouvez l'enregistrer à partir du système en cours d'exécution.

Pour enregistrer SLE Micro auprès de SUSE Customer Center, procédez comme suit :

  1. Exécutez transactional-update register comme suit :

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS

    Pour effectuer l'enregistrement sur un serveur d'enregistrement local, fournissez également l'URL du serveur :

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS \
     --url "https://suse_register.example.com/"

    Remplacez REGISTRATION_CODE par le code d'enregistrement que vous avez reçu avec votre exemplaire de SLE Micro. Remplacez EMAIL_ADDRESS par l'adresse électronique associée au compte SUSE que vous ou votre organisation utilisez pour gérer les abonnements.

  2. Redémarrez votre système pour basculer vers le dernier instantané.

  3. SLE Micro est à présent enregistré.

Note
Note : autres options d'enregistrement

Pour obtenir des informations qui dépassent le cadre de cette section, reportez-vous à la documentation en ligne à l'aide de SUSEConnect --help.

6.2 Ajout d'utilisateurs

Étant donné que SLE Micro exige qu'un utilisateur sans privilèges se connecte via SSH ou accède à Cockpit, vous devez créer un compte de ce type.

Cette étape est facultative si vous avez défini un utilisateur sans privilèges dans Combustion.

  1. Exécutez la commande useradd comme suit :

    # useradd -m USER_NAME
  2. Définissez un mot de passe pour ce compte :

    # passwdUSER_NAME
  3. Si nécessaire, ajoutez l'utilisateur au groupe wheel :

    # usermod -aG wheelUSER_NAME