Administración de SLE Micro mediante el comando transactional-update
- DESCRIPCIÓN
El comando
transactional-update
permite modificar un sistema de archivos de solo lectura. Las modificaciones se realizan en una instantánea independiente y no influyen en el sistema en ejecución hasta que se arranca en la instantánea.- INTENCIÓN
Desea administrar SLE Micro y gestionar sus actualizaciones, minimizando el riesgo de tiempo de inactividad del sistema debido a fallos de actualización y garantizando una fácil reversión.
- ESFUERZO
Se tardan menos de 30 minutos en comprender el comando
transactional-update
.- OBJETIVO
Comprender cómo funciona
transactional-update
y cómo puede utilizarlo para administrar el sistema.- REQUISITOS
Una instancia en ejecución de SLE Micro
Privilegios de
root
1 Actualizaciones transaccionales #
1.1 ¿Qué son las actualizaciones transaccionales? #
Para mantener el sistema operativo base estable y coherente, SLE Micro utiliza un sistema de archivos raíz de solo lectura. Por lo tanto, no puede realizar cambios directos en el sistema de archivos raíz, por ejemplo, mediante el comando zypper
. En su lugar, SLE Micro introduce actualizaciones transaccionales que permiten aplicar uno o más cambios al sistema de archivos raíz.
El comportamiento por defecto de transactional-update
es crear una nueva instantánea desde el sistema de archivos raíz actual después de cada cambio. Para aplicar los cambios, debe rearrancar el host. No es posible ejecutar el comando transactional-update
varias veces sin volver a arrancar para añadir más cambios a la instantánea. Esta acción crea instantáneas independientes que no incluyen cambios de las instantáneas anteriores.
1.2 ¿Cómo funcionan las actualizaciones transaccionales? #
Cada vez que llame al comando transactional-update
para cambiar el sistema, ya sea para instalar un paquete, realizar una actualización o aplicar un parche, se llevarán a cabo las siguientes acciones:
Se crea una nueva instantánea de lectura y escritura a partir del sistema de archivos raíz actual o de una instantánea que haya especificado.
Se aplican todos los cambios (actualizaciones, parches o instalación de paquetes).
La instantánea vuelve al modo de solo lectura.
Si los cambios se han aplicado correctamente, la nueva instantánea del sistema de archivos raíz se establece como instantánea por defecto.
Después de rearrancar, el sistema arranca en la nueva instantánea.
1.3 Ventajas de las actualizaciones transaccionales #
Son atómicas: la actualización se aplica solo si se completa correctamente.
Los cambios se aplican en una instantánea independiente, por lo que no influyen en el sistema en ejecución.
Los cambios se pueden deshacer fácilmente.
1.4 Entorno dentro del comando transactional-update
#
Cada vez que se ejecuta el comando transactional-update
, los cambios se realizan en una nueva instantánea. El entorno de la instantánea puede ser distinto al de la shell desde la que se ejecuta el comando transactional-update
. Por ejemplo, el directorio de trabajo actual ($PWD
) no se define en el directorio desde el que se ejecuta transactional-update
, sino que se define como /
.
Desde la instantánea, no es posible acceder al directorio /var
. Este directorio tampoco se incluye en la instantánea. Sin embargo, algunos directorios no se incluyen en la instantánea, pero se puede acceder a ellos dentro del entorno transactional-update
; por ejemplo, el directorio /root
.
2 Uso del comando transactional-update
#
El comando transactional-update
permite la instalación atómica o la eliminación de actualizaciones. Las actualizaciones se aplican solo si se pueden instalar todas correctamente. transactional-update
crea una instantánea del sistema y la utiliza para actualizar el sistema. Más adelante podrá restaurar esta instantánea. Todos los cambios se activan solo después de rearrancar.
La sintaxis del comando transactional-update
es la siguiente:
transactional-update [option]
[general_command] [package_command] standalone_command
transactional-update
sin argumentos
Si no especifica ningún comando ni opción mientras ejecuta el comando transactional-update
, el sistema se actualiza automáticamente.
Aquí se describen los posibles parámetros del comando.
transactional-update
#-
--interactive, -i
Se puede utilizar junto con un comando de paquete para activar el modo interactivo.
-
--non-interactive, -n
Se puede utilizar junto con un comando de paquete para activar el modo no interactivo.
-
--continue [number], -c
La opción
--continue
permite realizar varios cambios en el sistema de archivos raíz sin rearrancar. Consulte la Sección 3, “Aplicación de varios cambios sin rearrancar” para obtener más información.Otra función útil de la opción
--continue
es que puede seleccionar cualquier instantánea existente como base para la nueva instantánea. En el siguiente ejemplo se muestra cómo se ejecutatransactional-update
para instalar un paquete nuevo en una instantánea basada en la instantánea 13 y, a continuación, se vuelve a ejecutar para instalar otro paquete:>
sudo
transactional-update pkg install package_1
>
sudo
transactional-update --continue 13 pkg install package_2
-
--no-selfupdate
Inhabilita la actualización automática de
transactional-update
.-
--drop-if-no-change, -d
Descarta la instantánea creada por
transactional-update
si no se han realizado cambios en el sistema de archivos raíz. Si hay cambios en el directorio/etc
, esos cambios se vuelven a fusionar en el sistema de archivos actual.-
--quiet
El comando
transactional-update
no da como resultadostdout
.-
--help, -h
Imprime la ayuda para el comando
transactional-update
.-
--version
Muestra la versión del comando
transactional-update
.
2.1 Comandos generales #
En esta sección se muestran los comandos de propósito general de transactional-update
.
-
grub.cfg
Use este comando para reconstruir el archivo de configuración del cargador de arranque GRUB.
-
bootloader
El comando vuelve a instalar el cargador de arranque.
-
initrd
Utilice el comando para reconstruir
initrd
.-
kdump
En caso de que realice cambios en el hardware o el almacenamiento, es posible que deba reconstruir el archivo initrd de Kdump.
-
shell
Abre una shell de lectura y escritura en la nueva instantánea antes de salir. El comando se utiliza normalmente con fines de depuración.
-
reboot
El sistema se rearranca cuando se completa el comando
transactional-update
.-
run <comando>
Ejecuta el comando proporcionado en una nueva instantánea.
-
setup-selinux
Instala y habilita la directiva SELinux de destino.
3 Aplicación de varios cambios sin rearrancar #
El comando transactional-update
aplica los cambios al sistema de archivos raíz en un sistema transaccional. El comportamiento por defecto es crear una nueva instantánea desde el sistema de archivos raíz actual después de cada cambio y rearrancar para aplicar los cambios.
Para realizar varios cambios en el sistema de archivos raíz sin rearrancar, tiene varias opciones que se describen en las siguientes secciones:
3.1 La opción transactional-update
--continue
#
Utilice el comando transactional-update
junto con la opción --continue
para realizar varios cambios sin rearrancar. Se crea una instantánea independiente en cada ejecución que contiene todos los cambios de la instantánea anterior, además de los cambios nuevos. La instantánea final incluye todos los cambios. Para aplicarlos, rearranque el sistema y la instantánea final se convertirá en el nuevo sistema de archivos raíz.
3.2 El comando transactional-update run
#
El comando transactional-update
run
normalmente ejecuta solo un comando. Sin embargo, puede utilizarlo para ejecutar varios comandos en una sesión transaccional concatenándolos dentro de una shell de comandos como bash
, por ejemplo:
>
sudo
transactional-update run bash -c 'ls && date; if [ true ]; then echo -n "Hello "; echo '\''world'\''; fi'
El comando transactional-update run
tiene las mismas limitaciones que el comando transactional-update shell
descrito en la Sección 3.3, “La shell transactional-update
”, excepto que los comandos introducidos se registran en el archivo /var/log/transactional-update.log
.
3.3 La shell transactional-update
#
El comando transactional-update shell
abre una shell en el entorno transactional-update. En la shell, puede introducir casi cualquier comando de Linux para realizar cambios en el sistema de archivos, por ejemplo, instalar varios paquetes con el comando zypper
o realizar cambios en los archivos que forman parte del sistema de archivos de solo lectura. También puede verificar que los cambios realizados anteriormente con el comando transactional-update
sean correctos.
La shell transaccional tiene varias limitaciones. Por ejemplo, no es posible iniciar o detener servicios mediante comandos systemd
, ni modificar la partición /var
porque no está montada. Además, los comandos introducidos durante una sesión de shell no se registran en el archivo /transactional-update.log
.
Todos los cambios que realice en el sistema de archivos forman parte de una sola instantánea. Cuando termine de realizar cambios en el sistema de archivos y salga de la shell con el comando exit
, deberá reiniciar el host para aplicar los cambios.
4 Realización de la limpieza de instantáneas #
Puede utilizar transactional-update
para limpiar las instantáneas no utilizadas del sistema de archivos y los directorios de superposición /etc
a los que no se hace referencia.
transactional-update
reconoce los siguientes comandos de limpieza:
-
cleanup-snapshots
El comando marca todas las instantáneas no utilizadas para que Snapper las elimine.
-
cleanup-overlays
El comando elimina todas las capas de superposición de
/etc
no utilizadas del directorio/var/lib/overlay
.-
cleanup
El comando combina los comandos
cleanup-snapshots
ycleanup-overlays
.
4.1 Cómo funciona la limpieza #
Si ejecuta el comando transactional-update cleanup
, se asignará un algoritmo de limpieza a todas las instantáneas antiguas que no tengan ninguno. También se marcan todas las instantáneas importantes. El comando también elimina todos los directorios de superposición /etc
a los que no se hace referencia (y, por lo tanto, que no se utilizan) en /var/lib/overlay
.
Las instantáneas con el algoritmo de limpieza number
definido se suprimirán según las reglas configuradas en /etc/snapper/configs/root
con los siguientes parámetros:
- NUMBER_MIN_AGE
Define la antigüedad mínima que debe tener una instantánea (en segundos) para que se pueda eliminar automáticamente.
- NUMBER_LIMIT/NUMBER_LIMIT_IMPORTANT
Define el número máximo de instantáneas almacenadas. Los algoritmos de limpieza suprimen las instantáneas por encima del valor máximo especificado, sin tener en cuenta la instantánea ni el espacio del sistema de archivos. Los algoritmos también suprimen las instantáneas por encima del valor mínimo hasta que se alcanzan los límites de instantáneas y del sistema de archivos.
systemd
también realiza regularmente una limpieza de instantáneas.
5 Registro de productos #
Puede utilizar el comando transactional-update register
para gestionar todas las tareas relacionadas con el registro de productos y la gestión de suscripciones. Puede proporcionar las siguientes opciones:
-
--list-extensions
Con esta opción, el comando muestra las extensiones disponibles para el sistema. Puede utilizar el resultado para buscar un identificador de producto para la activación del producto.
-
-p, --product
Utilice esta opción para especificar un producto para la activación. El identificador de producto tiene el siguiente formato: <nombre>/<versión>/<arquitectura>, por ejemplo,
sle-module-live-patching/15.3/x86_64
. El comando correspondiente tiene el formato siguiente:>
sudo
transactional-update register -p sle-module-live-patching/15.3/x86_64-
-r, --regcode
Registra el sistema con el código de registro proporcionado. El comando registra la suscripción y habilita los repositorios de software.
-
-d, --de-register
La opción anula el registro del sistema o, si se utiliza junto con la opción
-p
, anula el registro de una extensión.-
-e, --email
Especifica una dirección de correo electrónico que se utiliza en el Centro de servicios al cliente de SUSE para el registro.
-
--url
Especifica la URL de su servidor de registro. La URL se almacena en la configuración y se utiliza en las siguientes invocaciones de comandos. Por ejemplo:
>
sudo
transactional-update register --url https://scc.suse.com-
-s, --status
Muestra el estado de registro actual en formato JSON.
-
--write-config
Escribe el valor de las opciones proporcionadas en el archivo de configuración
/etc/SUSEConnect
.-
--cleanup
Elimina las credenciales antiguas del sistema.
-
--version
Imprime la versión.
-
--help
Muestra cómo se usa el comando.
6 Gestión de paquetes de software #
Puede utilizar transactional-update
para instalar, actualizar o eliminar paquetes de software.
SLE Micro obtiene los paquetes de software de los repositorios que están disponibles después del registro del producto.
transactional-update
utiliza los siguientes comandos para gestionar los paquetes de software.
pkg
y las opciones de Zypper
Con los comandos de transactional-update pkg
, puede utilizar cualquier opción de Zypper que corresponda al subcomando utilizado. Por ejemplo, transactional-update pkg install
comprende todas las opciones que entiende zypper install
.
-
pkg install
Instala paquetes individuales de los canales disponibles mediante el comando
zypper install
. Este comando también se puede utilizar para instalar archivos RPM de corrección temporal del programa (PTF). La opción por defecto para este comando es--interactive
.>
sudo
transactional-update pkg install package_name
O bien
>
sudo
transactional-update pkg install rpm1 rpm2
O bien, para instalar un patrón de software:
>
sudo
transactional-update pkg install -t pattern pattern_name
-
pkg remove
Elimina paquetes individuales de la instantánea activa mediante el comando
zypper remove
. Este comando también se puede usar para eliminar archivos RPM de PTF. La opción por defecto para este comando es--interactive
.>
sudo
transactional-update pkg remove package_name
-
pkg update
Actualiza paquetes individuales desde la instantánea activa mediante el comando
zypper update
. Solo se pueden actualizar los paquetes que forman parte de la instantánea del sistema de archivos base. La opción por defecto para este comando es--interactive
.>
sudo
transactional-update pkg update package_name
-
patch
Comprueba los parches disponibles y los instala. La opción por defecto para este comando es
--non-interactive
.-
dup
Realiza una actualización del sistema. La opción por defecto para este comando es
--non-interactive
.-
up
Actualiza los paquetes instalados a versiones más recientes. La opción por defecto para este comando es
--non-interactive
.-
migration
El comando migra el sistema a un destino seleccionado. Normalmente, se utiliza para actualizar el sistema si se ha registrado mediante el Centro de servicios al cliente de SUSE.
7 Realización de una reversión del sistema #
GRUB 2 permite el arranque desde instantáneas Btrfs y, por lo tanto, permite utilizar cualquier instantánea funcional anterior en caso de que la nueva no funcione correctamente.
Al arrancar una instantánea, las partes del sistema de archivos incluidas en la instantánea se montan como de solo lectura; todos los demás sistemas de archivos y partes que se excluyen de las instantáneas se montan con derechos de lectura y escritura y se pueden modificar.
Al final de la instalación inicial del sistema, se crea una instantánea inicial que se puede arrancar. Puede volver a ese estado en cualquier momento arrancando esta instantánea. La instantánea se puede identificar por la descripción first root file system
.
Existen dos métodos para realizar una reversión del sistema.
Desde un sistema en ejecución, puede definir la instantánea por defecto. Consulte más información en el Procedimiento 2, “Reversión desde un sistema en ejecución”.
Especialmente en los casos en los que la instantánea actual está dañada, puede arrancar en la nueva instantánea y definirla por defecto. Para obtener información detallada, consulte el Procedimiento 3, “Reversión a una instantánea de trabajo”.
Si la instantánea actual funciona, puede utilizar el siguiente procedimiento para revertir el sistema.
Identifique la instantánea que debe definirse como la instantánea por defecto y anote su número.
>
sudo
snapper listDefina la instantánea como la opción por defecto.
>
sudo
transactional-update rollback snapshot_numberSi omite snapshot number, la instantánea actual se establecerá por defecto.
Sugerencia: definición de la última instantánea de trabajoPara definir la última instantánea de trabajo como la predeterminada, ejecute
rollback last
.Rearranque el sistema para arrancar con la nueva instantánea por defecto.
El siguiente procedimiento se utiliza en caso de que la instantánea actual esté dañada y no pueda arrancar en ella.
Rearranque el sistema y seleccione
Start bootloader from a read-only snapshot
.Elija una instantánea para arrancar. Las instantáneas se ordenan según la fecha de creación, con la última en la parte superior.
Inicie sesión en su sistema y compruebe si todo funciona como se espera. Los datos escritos en los directorios excluidos de las instantáneas no se modificarán.
Si la instantánea en la que arrancó no es adecuada para la reversión, rearranque el sistema y elija otra.
Si la instantánea funciona como se espera, puede realizar la reversión ejecutando el siguiente comando:
>
sudo
transactional-update rollback
Y rearranque después.
8 Gestión de actualizaciones transaccionales automáticas #
Las actualizaciones automáticas se controlan mediante systemd.timer
una vez al día. Esto aplica todas las actualizaciones e informa a rebootmgrd
de que el equipo debe rearrancarse. Puede ajustar la hora a la que se ejecuta la actualización; consulte la documentación de systemd.timer(5).
8.1 Inhabilitación de las actualizaciones automáticas #
Las actualizaciones automáticas están habilitadas por defecto. Sin embargo, puede inhabilitarlas con este comando:
>
sudo
systemctl --now disable transactional-update.timer
8.2 Configuración de notificaciones de actualizaciones fallidas #
Cuando falla el comando transactional-update
automático, se suprime la instantánea fallida. Mientras tanto, el sistema podría rearrancarse y, después, no podría descubrir que la última actualización automática ha fallado. Por lo tanto, puede configurar un servicio de systemd
que le informe sobre el fallo del comando transactional-update
automático. El procedimiento para hacerlo se puede resumir en los siguientes pasos:
Instalar los paquetes necesarios si no están presentes en el sistema. Para obtener información detallada, consulte la Sección 8.2.1, “Instalación de los paquetes necesarios”.
Configurar el servicio de
systemd-status-mail
. Para obtener información detallada, consulte la Sección 8.2.2, “Configuración del serviciosystemd-status-mail
”.
8.2.1 Instalación de los paquetes necesarios #
Los paquetes mailx
y systemd-status-mail
son necesarios para configurar las notificaciones. Están presentes en el sistema por defecto. Sin embargo, si no los tiene instalados, puede instalarlos ejecutando el siguiente comando:
>
sudo
transactional-update pkg in systemd-status-mail mailx
Rearranque el sistema.
8.2.2 Configuración del servicio systemd-status-mail
#
Para configurar el servicio systemd-status-mail
, puede crear un archivo de configuración o utilizar la herramienta jeos-config
.
8.2.2.1 Configuración del servicio mediante jeos-config
#
Para configurar las notificaciones por correo electrónico, puede utilizar las herramientas jeos-config
como se describe a continuación.
Para abrir la ventana de configuración, ejecute el comando:
>
sudo
jeos-config status_mailEn el cuadro de diálogo, configure los elementos según sus necesidades.
Confirme haciendo clic en
.
8.2.2.2 Configuración del servicio mediante la edición de un archivo de configuración #
El archivo de configuración por defecto se encuentra en /usr/etc/default/systemd-status-mail
. Para modificarlo, cree una copia en /etc/default/
y edite los siguientes elementos:
- ADDRESS
Es una entrada obligatoria. Especifique la dirección de correo electrónico a la que se va a enviar la notificación. Por ejemplo:
ADDRESS=“tux@example.com”
- FROM
El correo electrónico del remitente del correo de notificación. Asegúrese de que la dirección sea válida. Por ejemplo:
FROM=“geeko@example.com”
- MAILER
El tipo de aplicación de correo para enviar notificaciones. Utilice el valor
mailx
de la siguiente manera:MAILER=“mailx”
- RELAYHOST
Especifique el relé de correo utilizado por mailx.
RELAYHOST=“mail.example.com:587”
- MAILX_OPTIONS
Especifique las opciones necesarias para asegurarse de que el proveedor de correo aceptará el correo de notificación.
MAILX_OPTIONS="-Sverbose -Ssmtp-use-starttls -Ssmtp-auth=login -Ssmtp-auth-user='tux@example.com' -Ssmtp-auth-password='TopSecret'"
9 Información legal #
Copyright © 2006 –2024 SUSE LLC y colaboradores. Reservados todos los derechos.
Está permitido copiar, distribuir y modificar este documento según los términos de la licencia de documentación gratuita GNU, versión 1.2 o (según su criterio) versión 1.3. Este aviso de copyright y licencia deberán permanecer inalterados. En la sección titulada “GNU Free Documentation License” (Licencia de documentación gratuita GNU) se incluye una copia de la versión 1.2 de la licencia.
Para obtener información sobre las marcas comerciales de SUSE, consulte https://www.suse.com/company/legal/. Todas las marcas comerciales de otros fabricantes son propiedad de sus respectivas empresas. Los símbolos de marcas comerciales (®, ™, etc.) indican marcas comerciales de SUSE y sus filiales. Los asteriscos (*) indican marcas comerciales de otros fabricantes.
Toda la información recogida en esta publicación se ha compilado prestando toda la atención posible al más mínimo detalle. Sin embargo, esto no garantiza una precisión total. Ni SUSE LLC, ni sus filiales, ni los autores o traductores serán responsables de los posibles errores o las consecuencias que de ellos pudieran derivarse.