Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / Distribución de SLE Micro mediante imágenes de disco en bruto en discos IBM Z DASD

Distribución de SLE Micro mediante imágenes de disco en bruto en discos IBM Z DASD

Fecha de publicación: 12 Dic 2024
DESCRIPCIÓN

SLE Micro proporciona imágenes en bruto, también conocidas como imágenes preconstruidas, que se pueden distribuir directamente en el almacenamiento del dispositivo.

INTENCIÓN

Este artículo proporciona instrucciones paso a paso sobre la distribución de SLE Micro en un equipo IBM Z.

ESFUERZO

Se tardan aproximadamente 20 minutos en leer el artículo.

OBJETIVO

SLE Micro se distribuye correctamente en el sistema.

REQUISITOS
  • Un disco con Linux en ejecución.

  • Un disco donde se distribuye la imagen en bruto y se ejecuta SLE Micro.

  • Un disco que sirve como medio de configuración.

1 Acerca de las imágenes preconstruidas

Las imágenes preconstruidas son representaciones listas para usar de un sistema operativo en ejecución. No se instalan de forma tradicional mediante un instalador, sino que se copian en el disco duro del host de destino. El tema incluye información básica acerca de estas imágenes preconstruidas.

Las imágenes preconstruidas están diseñadas para configurarse en el primer arranque mediante las herramientas incluidas en las imágenes. El cargador de arranque detecta el primer arranque como se describe en la Sección 1.2, “Detección del primer arranque”. Cada imagen incluye subvolúmenes montados por defecto, que se pueden cambiar durante la primera configuración de arranque. Para obtener más información sobre los subvolúmenes, consulte la Sección 1.1, “Partición por defecto”.

1.1 Partición por defecto

Las imágenes preconstruidas se proporcionan con un esquema de particionamiento por defecto. Puede cambiarlo durante el primer arranque utilizando Ignition o Combustion.

Importante
Importante: Btrfs es obligatorio para el sistema de archivos raíz

Si desea realizar cambios en el esquema de particionamiento por defecto, el sistema de archivos raíz debe ser Btrfs.

Cada imagen tiene los siguientes subvolúmenes:

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

El directorio /etc se monta como overlayFS, donde el directorio superior se monta en /var/lib/overlay/1/etc/.

Puede reconocer los subvolúmenes montados por defecto mediante la opción x-initrd.mount de /etc/fstab. Otros subvolúmenes o particiones deben configurarse mediante Ignition o Combustion.

1.2 Detección del primer arranque

La configuración de distribución solo se ejecuta en el primer arranque. Para distinguir entre el primer arranque y los siguientes, el archivo de indicador /boot/writable/firstboot_happened se crea después de que finalice el primer arranque. Si el archivo no está presente en el sistema de archivos, el atributo ignition.firstboot se pasa a la línea de comandos del kernel y, por lo tanto, se activa la ejecución tanto de Ignition como de Combustion (en el initrd). Después de completar el primer arranque, se crea el archivo de indicador /boot/writable/firstboot_happened.

Nota
Nota: el archivo de indicador siempre se crea

Aunque la configuración no se realice correctamente debido a que falten archivos de configuración o que estos no sean correctos, el archivo de indicador /boot/writable/firstboot_happened se crea.

1.2.1 Forzado de la reconfiguración del sistema en un arranque posterior

Si necesita volver a configurar el sistema después del primer arranque, puede forzar la reconfiguración en el siguiente arranque. Tiene dos opciones.

  • Puede pasar el atributo ignition.firstboot=1 a la línea de comandos del kernel.

  • Puede suprimir el archivo de indicador /boot/writable/firstboot_happened.

2 Distribución de SLE Micro

El procedimiento de distribución de SLE Micro consta de tres fases. No omita ninguna de las fases y siga el orden que se indica a continuación.

  1. Activación de discos DASD: antes de iniciar la distribución, debe asegurarse de que todos los discos que se van a utilizar están disponibles y activos. Para obtener información detallada, consulte la Sección 3, “Preparación del equipo”.

  2. Preparación de un dispositivo de configuración: para configurar la red, añadir usuarios y registrar el sistema, prepare la configuración según las instrucciones proporcionadas en la Sección 4, “Preparación del disco de configuración”.

  3. Descarga de la imagen de SLE Micro y distribución en el disco. Para obtener información detallada, consulte la Sección 5, “Distribución de la imagen de disco en bruto en el disco DASD”.

3 Preparación del equipo

Antes de empezar a distribuir SLE Micro, debe comprobar si los tres discos DASD necesarios están activos. Para comprobar el estado de los discos, ejecute el comando:

# 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

El disco de 5 GB se utilizará como dispositivo de configuración y el de 20 GB será el disco en el que se distribuirá SLE Micro.

Si no ve los discos en el resultado del comando, debe activar los discos. Para ello, siga los pasos que se especifican a continuación:

  1. Ejecute lszdev dasd para mostrar una lista completa de dispositivos:

    # 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. Active los discos mediante el comando:

    # chzdev -eDISK_ID

    Por ejemplo, para activar el disco 0.0.0101:

    # chzdev -e 0.0.0101
  3. Verifique que los discos estén activos en el resultado del comando lsdasd.

4 Preparación del disco de configuración

Sugerencia
Sugerencia: disco virtual frente a disco físico

Un disco virtual puede ser más adecuado para las distribuciones de producción, mientras que un disco físico es más adecuado para el desarrollo.

Durante el proceso de instalación, puede pasar una configuración compleja para definir usuarios, directorios o para proporcionar claves SSH. Para ello, cree un dispositivo de configuración donde se almacene una configuración completa. El siguiente procedimiento de ejemplo describe cómo crear un dispositivo de este tipo:

  1. Identifique el disco de 5 GB:

    # 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

    En el resultado anterior, el valor Bus-ID del disco que se utilizará como dispositivo de configuración es 0.0.0102. Utilice el valor de Bus-ID o el tamaño del disco para identificar el disco, ya que el nombre del dispositivo (/dev/dasdX) puede cambiar después de cada rearranque.

  2. Formatee el disco. Tenga en cuenta que al formatear se eliminan todos los datos de ese disco.

    # dasdfmt -b 4096 -y -p /dev/dasdb
  3. Cree una partición:

    # parted /dev/dasdb mkpart ext2 0% 100%
  4. Formatee la partición:

    # mkfs.ext4 /dev/dasdb1
  5. Etiquete la partición como ignition:

    # e2label /dev/dasdb1 ignition
  6. Verifique el sistema de archivos:

    # blkid
  7. Monte la partición:

    # mount /dev/dasdb1 /mnt
  8. Prepare la estructura de directorios para Ignition y/o Combustion. Para Ignition:

    # mkdir -p  /mnt/ignition

    Para Combustion:

    # mkdir -p /mnt/combustion
  9. Copie la clave SSH pública en /mnt/combustion como ssh_key.pub.

  10. Prepare la configuración como se describe más adelante.

4.1 Configuración de la distribución de SLE Micro con Combustion

Combustion es un módulo dracut que permite configurar el sistema en el primer arranque. Puede utilizar Combustion, por ejemplo, para cambiar las particiones por defecto, definir contraseñas de usuario, crear archivos o instalar paquetes.

4.1.1 ¿Cómo funciona Combustion?

Combustion se invoca después de pasar el argumento ignition.firstboot a la línea de comandos del kernel. Combustion lee un archivo proporcionado denominado script, ejecuta los comandos incluidos y, por lo tanto, realiza cambios en el sistema de archivos. Si script incluye el indicador de red, Combustion intenta configurar la red. Después de montar /sysroot, Combustion intenta activar todos los puntos de montaje en /etc/fstab y luego llama a transactional-update para aplicar otros cambios, por ejemplo, establecer una contraseña de root o instalar paquetes.

El archivo de configuración script debe residir en el subdirectorio combustion del medio de configuración etiquetado combustion. La estructura del directorio debe tener el aspecto siguiente:

<root directory>
└── combustion
    └── script
    └── other files
Sugerencia
Sugerencia: uso de Combustion junto con Ignition

Combustion se puede utilizar junto con Ignition. Si tiene la intención de hacerlo, etiquete el medio de configuración ignition e incluya el directorio ignition con config.ign en la estructura de directorios como se muestra a continuación:

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

En este escenario, Ignition se ejecuta antes que Combustion.

4.1.2 Ejemplos de configuración de Combustion

4.1.2.1 El archivo de configuración script

El archivo de configuración script es un conjunto de comandos que Combustion analiza y ejecuta en una shell transactional-update. Este artículo proporciona ejemplos de tareas de configuración realizadas por Combustion.

Importante
Importante: incluya una declaración de intérprete

Como el archivo script es interpretado por la shell, inicie siempre el archivo con la declaración del intérprete en su primera línea. Por ejemplo, en el caso de Bash:

#!/bin/bash

Para iniciar sesión en el sistema, incluya al menos la contraseña de root. Sin embargo, se recomienda establecer la autenticación mediante claves SSH. Si necesita utilizar una contraseña de root, asegúrese de configurar una contraseña segura. Para una contraseña generada aleatoriamente, use al menos 10 caracteres. Si crea la contraseña manualmente, se recomienda utilizar incluso más de 10 caracteres y combinar letras mayúsculas y minúsculas y números.

4.1.2.1.1 Configuración de la red

Para configurar y utilizar la conexión de red durante el primer arranque, añada la siguiente instrucción a script:

# combustion: network

El uso de esta instrucción pasa el argumento rd.neednet=1 a dracut. La configuración de red utiliza por defecto DHCP. Si se necesita una configuración de red diferente, proceda como se describe en la Sección 4.1.2.1.2, “Realización de modificaciones en initramfs”.

Si no utiliza la instrucción, el sistema sigue configurado sin conexión de red.

4.1.2.1.2 Realización de modificaciones en initramfs

Puede que necesite realizar cambios en el entorno initramfs, por ejemplo, para escribir una configuración de red personalizada para NetworkManager en /etc/NetworkManager/system-connections/. Para ello, utilice la instrucción prepare.

Por ejemplo, para crear una conexión con una dirección IP estática y configurar 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 Particiones

Las imágenes en bruto de SLE Micro se proporcionan con un esquema de particionamiento por defecto, como se describe en la Sección 1.1, “Partición por defecto”. Es posible que desee utilizar una partición diferente. El siguiente conjunto de fragmentos de código de ejemplo mueve /home a una partición diferente.

Nota
Nota: realice los cambios fuera de los directorios incluidos en las instantáneas

El siguiente guion realiza cambios que no se incluyen en las instantáneas. Si el guion falla y la instantánea se descarta, ciertos cambios permanecen visibles y no se pueden revertir; por ejemplo, los cambios en el dispositivo /dev/vdb.

El siguiente fragmento crea un esquema de particionamiento GPT con una sola partición en el dispositivo /dev/vdb:

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

partition=/dev/vdb1

La partición tiene el formato Btrfs:

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

El siguiente fragmento de código traslada el posible contenido de /home a la ubicación de la nueva carpeta /home:

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

El fragmento de código siguiente elimina una entrada antigua en /etc/fstab y crea una entrada nueva:

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 Creación de nuevos usuarios

Dado que algunos servicios, como Cockpit, requieren que se inicie sesión como un usuario que no sea root, defina aquí al menos un usuario sin privilegios. Como alternativa, puede crear un usuario de este tipo desde un sistema en ejecución como se describe en la Sección 6.2, “Adición de usuarios”.

Para añadir una nueva cuenta de usuario, cree primero una cadena hash que represente la contraseña del usuario. Utilice el comando openssl passwd -6.

Después de obtener el hash de contraseña, añada las siguientes líneas a script:

mount /home
useradd -m EXAMPLE_USER
echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
4.1.2.1.5 Definición de una contraseña de root

Antes de definir la contraseña de root, genere un hash de la contraseña; por ejemplo, utilizando openssl passwd -6. Para definir la contraseña, añada la línea siguiente a script:

echo 'root:PASSWORD_HASH' | chpasswd -e
4.1.2.1.6 Adición de claves SSH

El siguiente fragmento crea un directorio para almacenar la clave SSH del root y luego copia la clave SSH pública ubicada en el dispositivo de configuración en el archivo authorized_keys.

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

El servicio SSH debe estar habilitado en caso de que necesite iniciar la sesión de forma remota a través de SSH. Para obtener información detallada, consulte la Sección 4.1.2.1.7, “Habilitación de servicios”.

4.1.2.1.7 Habilitación de servicios

Para habilitar los servicios del sistema, por ejemplo, el servicio SSH, añada la siguiente línea a script:

systemctl enable sshd.service
4.1.2.1.8 Instalación de paquetes
Importante
Importante: puede ser necesario conectarse a la red y registrar el sistema

Dado que algunos paquetes pueden requerir una suscripción adicional, es posible que deba registrar el sistema de antemano. También puede ser necesaria una conexión de red disponible para instalar paquetes adicionales.

Durante la configuración de primer arranque, puede instalar paquetes adicionales en el sistema. Por ejemplo, puede instalar el editor vim añadiendo:

zypper --non-interactive install vim-small
Nota
Nota

Tenga en cuenta que no podrá utilizar zypper una vez que se complete la configuración y arranque en el sistema configurado. Para realizar cambios más adelante, debe utilizar el comando transactional-update para crear una instantánea modificada.

4.1.2.2 Ejemplo completo del archivo script

El archivo script proporciona ajustes completos que pueden servirle como guía sobre cómo escribir su propia configuración de Combustion. El ejemplo no requiere ninguna otra configuración en 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 Configuración de la distribución de SLE Micro con Ignition

Ignition es una herramienta de provisión que permite configurar un sistema de acuerdo con sus especificaciones en el primer arranque.

4.2.1 ¿Cómo funciona Ignition?

Cuando el sistema se arranca por primera vez, Ignition se carga como parte de initramfs y busca un archivo de configuración en un directorio específico (en una memoria USB, o puede proporcionar una URL). Todos los cambios se realizan antes de que el kernel cambie del sistema de archivos temporal al sistema de archivos raíz real (antes de que se emita el comando switch_root).

Ignition utiliza un archivo de configuración en formato JSON denominado config.ign. Puede escribir la configuración manualmente o utilizar la aplicación Web Fuel Ignition en https://ignite.opensuse.org para generarla.

Importante
Importante

Fuel Ignition aún no cubre el vocabulario completo de Ignition, y el archivo JSON resultante puede necesitar ajustes manuales adicionales.

4.2.1.1 config.ign

El archivo de configuración config.ign debe residir en el subdirectorio ignition del medio de configuración; por ejemplo, una memoria USB con la etiqueta ignition. La estructura del directorio debe tener el aspecto siguiente:

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

Para crear una imagen de disco con la configuración de Ignition, puede utilizar la aplicación Web Fuel Ignition en https://ignite.opensuse.org.

config.ign contiene varios tipos de datos: objetos, cadenas, enteros, booleanos y listas de objetos. Para obtener la especificación completa, consulte Ignition specification v3.3.0.

El atributo version es obligatorio y, en el caso de SLE Micro, su valor debe definirse en 3.3.0 o en cualquier versión anterior. De lo contrario, Ignition fallará.

Para iniciar sesión en el sistema como root, debe incluir al menos una contraseña de root. Sin embargo, se recomienda establecer el acceso mediante claves SSH. Para configurar una contraseña, asegúrese de utilizar una que sea segura. Si utiliza una contraseña generada aleatoriamente, use al menos 10 caracteres. Si crea la contraseña manualmente, se recomienda utilizar incluso más de 10 caracteres y combinar letras mayúsculas y minúsculas y números.

4.2.2 Ejemplos de configuración de Ignition

4.2.2.1 Ejemplos de configuración

En esta sección se proporcionan ejemplos de la configuración de Ignition en el formato JSON integrado.

Importante
Importante

La Sección 1.1, “Partición por defecto” muestra los subvolúmenes que se montan por defecto cuando se ejecuta la imagen preconstruida. Si desea añadir un nuevo usuario o modificar cualquiera de los archivos de un subvolumen que no esté montado por defecto, primero debe declarar dicho subvolumen para que también se monte. Encontrará más información sobre el montaje de sistemas de archivos en la Sección 4.2.2.1.1.3, “El atributo filesystems.

Nota
Nota: el atributo version es obligatorio

Cada archivo config.fcc debe incluir la versión 1.4.0 o anterior, que se convierte a la especificación de Ignition correspondiente.

4.2.2.1.1 Configuración de almacenamiento

El atributo storage se utiliza para configurar particiones, RAID, definir sistemas de archivos, crear archivos, etc. Para definir particiones, utilice el atributo disks. El atributo filesystems se utiliza para formatear particiones y definir puntos de montaje de particiones concretas. El atributo files se puede utilizar para crear archivos en el sistema de archivos. Cada uno de los atributos mencionados se describe en las siguientes secciones.

4.2.2.1.1.1 El atributo disks

El atributo disks es una lista de dispositivos que permite definir particiones en estos dispositivos. El atributo disks debe contener al menos un device, los demás atributos son opcionales. El siguiente ejemplo utiliza un único dispositivo virtual y divide el disco en cuatro particiones:

{
  "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 El atributo raid

El atributo raid es una lista de matrices RAID. Los siguientes atributos de raid son obligatorios:

level

es un nivel de la matriz RAID concreta (lineal, raid0, raid1, raid2, raid3, raid4, raid5, raid6).

devices

es una lista de dispositivos de la matriz a los que se hace referencia por sus vías absolutas.

name

es un nombre que se utilizará para el dispositivo md.

Por ejemplo:

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

filesystems debe contener los siguientes atributos:

device

es la vía absoluta al dispositivo, normalmente /dev/sda en el caso de un disco físico.

format

es el formato del sistema de archivos (Btrfs, Ext4, xfs, vfat o swap).

Nota
Nota

En el caso de SLE Micro, el sistema de archivos root debe tener el formato Btrfs.

El siguiente ejemplo muestra el uso del atributo filesystems. El directorio /opt se montará en la partición /dev/sda1, que tiene el formato Btrfs. El dispositivo no se borrará.

Por ejemplo:

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

Habitualmente, el directorio personal de un usuario normal se encuentra en el directorio /home/USER_NAME. Dado que /home no se monta por defecto en initrd, el montaje debe definirse explícitamente para que el usuario se cree correctamente:

{
  "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 El atributo files

Puede utilizar el atributo files para crear cualquier archivo en el equipo. Tenga en cuenta que para crear archivos fuera del esquema de particionamiento por defecto, debe definir los directorios mediante el atributo filesystems.

En el siguiente ejemplo, se crea un nombre de host con el atributo files. El archivo /etc/hostname se creará con el nombre de host sl-micro1:

Importante
Importante

Tenga en cuenta que JSON acepta modos de archivo en números decimales, por ejemplo, 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 El atributo directories

El atributo directories es una lista de directorios que se crearán en el sistema de archivos. El atributo directories debe contener al menos un atributo path.

Por ejemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "storage": {
    "directories": [
      {
        "path": "/home/tux",
        "user": {
          "name": "tux"
        }
      }
    ]
  }
}
4.2.2.1.2 Administración de usuarios

El atributo passwd se utiliza para añadir usuarios. Dado que algunos servicios, como Cockpit, requieren que se inicie sesión como un usuario que no sea root, defina aquí al menos un usuario sin privilegios. Como alternativa, puede crear un usuario de este tipo desde un sistema en ejecución como se describe en la Sección 6.2, “Adición de usuarios”.

Para iniciar sesión en el sistema, cree un usuario root y uno normal y defina sus contraseñas. Debe usar hash con la contraseña; por ejemplo, mediante el comando openssl:

 openssl passwd -6

El comando crea un hash de la contraseña seleccionada. Utilice este hash como valor del atributo password_hash.

Por ejemplo:

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

El atributo users debe contener al menos un atributo name. ssh_authorized_keys es una lista de claves SSH para el usuario.

4.2.2.1.3 Habilitación de servicios systemd

Puede habilitar los servicios systemd especificándolos en el atributo systemd.

Por ejemplo:

{
  "ignition": {
    "version": "3.0.0"
  },
  "systemd": {
    "units": [
      {
        "enabled": true,
        "name": "sshd.service"
      }
    ]
  }
}
4.2.2.2 Conversión de archivos de formato YAML a JSON

JSON es un formato de archivo universal para almacenar datos estructurados. Las aplicaciones, por ejemplo, Ignition, lo utilizan para almacenar y recuperar su configuración. Dado que la sintaxis de JSON es compleja y difícil de leer para los humanos, puede escribir la configuración en un formato más sencillo llamado YAML y luego convertirlo a JSON.

4.2.2.2.1 Conversión de archivos YAML a formato JSON

La herramienta que convierte el vocabulario específico de Ignition de archivos YAML al formato JSON es butane. También verifica la sintaxis del archivo YAML para detectar posibles errores en la estructura. Para obtener la versión más reciente de butane, añada el siguiente repositorio:

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

Sustituya openSUSE_Tumbleweed por uno de los siguientes valores (según la distribución):

  • 'openSUSE_Leap_$releasever'

  • 15.5

Ahora puede instalar la herramienta butane:

> sudo  zypper ref && zypper in butane

Después de finalizar la instalación, puede invocar butane ejecutando:

>  butane -p -o config.ign config.fcc
  • config.fcc es la vía al archivo de configuración YAML.

  • config.ign es la vía al archivo de configuración JSON de salida.

  • La opción de comando -p añade saltos de línea al archivo de salida y, por lo tanto, lo hace más legible.

5 Distribución de la imagen de disco en bruto en el disco DASD

Para distribuir SLE Micro en el disco DASD de 20 GB, haga lo siguiente:

  1. Descargue la imagen de disco en bruto utilizando wget o curl. Por ejemplo:

    > curl -L0kO
  2. Extraiga la imagen:

    > unpack xz -dBUILD_IDENTIFICATION.raw.xz
  3. Exporte una variable que busque y almacene el nombre del dispositivo de 20 GB.

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

    • Si el disco se formatea por primera vez:

      # dasdfmt -b 4096 -y -p /dev/$SMDASD
    • Si el disco se ha formateado anteriormente:

      # dasdfmt -b 4096 -M quick -y -p /dev/$SMDASD
  5. Copie la imagen de disco en bruto en el disco (el nombre del dispositivo es /dev/dasdc en nuestro caso):

    dd if=IMAGE_NAME.raw status=progress  of=/dev/dasdc bs=4k
  6. Apague la instancia de Linux en ejecución:

    # init 0
  7. Inicie SLE Micro arrancando el segundo minidisco DASD en un terminal x3270:

    # ipl 101

6 Pasos posteriores a la distribución

6.1 Registro de SLE Micro desde la interfaz de línea de comandos

Si el sistema no se registró durante el proceso de distribución mediante el script de Combustion, puede hacerlo desde el sistema en ejecución.

Para registrar SLE Micro en el Centro de servicios al cliente de SUSE, haga lo siguiente:

  1. Ejecute transactional-update register de la siguiente manera:

    # transactional-update register -rREGISTRATION_CODE -e EMAIL_ADDRESS

    Para registrarse con un servidor de registro local, proporcione también la URL del servidor:

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

    Sustituya REGISTRATION_CODE por el código de registro que recibió con su copia de SLE Micro. Sustituya EMAIL_ADDRESS con la dirección de correo electrónico asociada a la cuenta de SUSE que usted o su organización utilicen para gestionar las suscripciones.

  2. Rearranque el sistema para cambiar a la última instantánea.

  3. SLE Micro ya está registrado.

Nota
Nota: otras opciones de registro

Para obtener más información al respecto, consulte la documentación en línea con SUSEConnect --help.

6.2 Adición de usuarios

Dado que SLE Micro requiere que un usuario sin privilegios inicie sesión mediante SSH o que acceda a Cockpit, debe crear una cuenta de este tipo.

Este paso es opcional si ha definido un usuario sin privilegios en Combustion.

  1. Ejecute el comando useradd de la siguiente manera:

    # useradd -m USER_NAME
  2. Defina una contraseña para esa cuenta:

    # passwdUSER_NAME
  3. Si es necesario, añada el usuario al grupo wheel:

    # usermod -aG wheelUSER_NAME