Intenté actualizar el sistema operativo (SO) SUSE en mi instancia de Amazon Elastic Compute Cloud (Amazon EC2) y recibí errores, como un error en la comprobación del estado de la instancia, un sistema operativo cuyo registro se ha anulado o un error en los comandos de Zypper.
Resolución
Comprobación del fallo de comprobación del estado de la instancia
Si se muestran otros errores de comporbación de estado de instancias, consulte ¿Cómo puedo solucionar el problema de una instancia EC2 de Linux que no supera la comprobación de estado debido a problemas con el sistema operativo?
Utilice el script susecloud-repocheck para diagnosticar y corregir automáticamente los problemas menores
El script susecloud-repocheck realiza una comprobación del repositorio del sistema operativo. Además, corrige los problemas que impiden que la instancia se registre en la infraestructura de actualizaciones de SUSE para lo siguiente:
- Microsoft Azure
- AWS
- Google Cloud Platform (GCP)
- Instancias bajo demanda de pago por uso (PAYG)
Para obtener más información, consulte susecloud-repocheck en el repositorio de SUSE GitHub.
Para ejecutar el script, utilice el siguiente comando:
$ python3 <(curl -sL https://raw.githubusercontent.com/SUSE/susecloud-repocheck/main/sc-repocheck.py)
El script crea registros en el directorio /var/log/ con el nombre sc-repocheck_<YYMMDD_hhmmss>.tar.xz.
Verifique manualmente el registro y resuelva los errores de actualización
Verifique el código de la instancia billingProducts o marketplaceProductCodes
Para el SLES estándar de PAYG, verifique el código billingProducts de la instancia. Para las aplicaciones PAYG SLES para SAP, verifique el código marketplaceProductCodes.
Ejecute el siguiente comando para comprobar el código de billingProducts o marketplaceProductCodes:
# /usr/bin/curl --noproxy '*' -w "\n" -s -H "X-aws-ec2-metadata-token: $(curl --noproxy '*' -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 300")" http://169.254.169.254/latest/dynamic/instance-identity/document | grep -E 'billingProducts|marketplaceProductCodes'
El siguiente es el resultado del comando:
billingProducts" : [ "bp-********" ]
Alternativa:
"marketplaceProductCodes" : \[ "\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*" \],
Compruebe las entradas de registro SMT en el archivo /etc/hosts
En el archivo /etc/hosts, busque una entrada que siga la línea # Agregado por el registro SMT, no eliminar, conserve también el comentario.
Nota: Existe más de un servidor de actualizaciones de nube pública de SUSE en una región de AWS. Para obtener más información, consulte la lista de direcciones IP de servidores de actualizaciones para las regiones de AWS en el sitio web de SUSE Public Cloud Solutions.
Para comprobar el estado de registro actual, ejecute el siguiente comando:
# SUSEConnect -s
En el resultado del comando anterior, compruebe si el parámetro Estado es Registrado o No registrado. Si el resultado es No registrado, vuelva a registrar la instancia.
Para eliminar entradas de registros anteriores, ejecute el siguiente comando:
# registercloudguest --clean
Para volver a registrar la instancia, ejecute el siguiente comando:
# registercloudguest --force-new
Para comprobar el estado de registro actual, ejecute el siguiente comando:
# SUSEConnect -s
Si el registro falla, revise los registros en /var/log/cloudregister para determinar el motivo del fallo. A continuación se muestra un ejemplo de error en los registros:
SUSEConnect error: Errno::ENOSPC: No space left on device
Elimine cualquier entrada de registro SMT duplicada o adicional del archivo /etc/hosts. La siguiente es una entrada de ejemplo agregada por el registro de SMT:
# vi /etc/hosts
# Added by SMT registration do not remove, retain comment as well
54.246.90.215 smt-ec2.susecloud.net smt-ec2
Solucionar errores comunes de registro
Para solucionar los errores de registro más comunes, siga estos pasos:
-
Para verificar que cloud-regionsrv-client y los paquetes de dependencias relacionados necesarios estén instalados en su sistema operativo, ejecute el siguiente comando:
# rpm -qa | grep -E 'cloud-regionsrv-client|cloud-regionsrv-client-plugin-ec2|regionServiceClientConfigEC2|SUSEConnect|suseconnect-ng|python3-ec2metadata|python3-dnspython|python3-lxml|python3-cssselect|python3-M2Crypto|python3-zypp-plugin|libzypp|ruby-common'
A continuación se muestra un ejemplo del comando anterior:
libzypp-17.31.20-150400.3.40.1.x86_64
suseconnect-ng-1.6.0~git0.31371c8-150400.3.22.1.x86_64
python3-zypp-plugin-0.6.3-150000.4.2.1.noarch
python3-cssselect-1.0.3-150000.3.3.1.noarch
python3-M2Crypto-0.38.0-150400.7.64.x86_64
python3-lxml-4.7.1-150200.3.10.1.x86_64
regionServiceClientConfigEC2-4.1.1-150000.3.27.1.noarch
ruby-common-2.1-3.15.noarch
python3-ec2metadata-5.0.0-150000.3.12.1.noarch
cloud-regionsrv-client-10.1.6-150000.6.105.1.noarch
cloud-regionsrv-client-plugin-ec2-1.0.4-150000.6.105.1.noarch
python3-dnspython-1.15.0-150000.3.2.1.noarch
Si los paquetes están desactualizados o faltan y el sistema operativo no tiene acceso a zypper, realice la actualización sin conexión. Para actualizar sin conexión, descargue los paquetes rpm con Zypper en otro host que funcione y transfiera los rpm al host que no funcione. A continuación, realice una instalación en Zypper de los paquetes rpm
-
Identifique los repositorios faltantes.
-
Si a su instancia de SUSE le faltan repositorios de software, ejecute los siguientes comandos para forzar un nuevo registro con todos los repositorios disponibles.
# registercloudguest --force-new
# SUSEConnect --list-extensions
# zypper lr --uri
Información relacionada
Preguntas frecuentes sobre SUSE Linux Enterprise Server (SLES) en Amazon EC2