
17 Feb Recuperar Billing Producto de Instancias AWS EC2 Suse Linux Enterprise Server 15 SP4, SP5 y SP6
Contexto:
Al usar la herramienta AWS Distar Recovery Services, por la manera en que esta funciona se pierde el billing products de las instancias de SUSE Linux de pago por uso (PAYG) o lanzamiento rápido.
Porque sucede esto de la pérdida del billing product?
Esto ocurre ya que la herramienta AWS DRS toma información de los discos (volúmenes), de las instancias y la réplica de una región a otra usando instancias de replicación a la que se le van creando volúmenes para duplicar la información y luego tomar snapshot (instantáneas) de estos volúmenes y guardarlos para crear instancia de conversión e instancias definitivas para recuperarnos de desastres.
Al ser de esta manera el proveedor de las AMI de instancias de pago por uso (PAYG) en este caso SUSE Linux indica que para conservar los datos de accesos a sus repositorios públicos (SMT), se debe conservar el billing product y para conservar el billing producto se debe tomar AMI haciendo uso del AMI builder y no crear instancias desde instantáneas (snapshots) tomados de las instancias EC2 con SLES.
Por tal motivo se pierde el billing pproduct y los accesos a los repositorios públicos de SUSE.
Ahora cómo Recuperamos este billing product y recuperamos los accesos nuevamente a los repositorios públicos de SUSE Linux.
Este tema no es tan complicado como se cree, aunque nos llevó tiempo entender ya que no existe documentación clara al respecto voy a tratar de seguir los pasos lo más detallados posibles para. Hacer esta recuperación de repositorios públicos de SUSE Linux y la recuperación del billing product.
Debemos tener un o tomar un AMI de la instancia que. perdió el billing product, de esta AMI crearemos una instancia y le vamos a comentar el archivo /etc/fstab
dejando solo disponible el volumen root, llamemos a nueva EC2 instancia A.
De esta instancia A debemos tener en cuenta lo siguiente tipo de Familia, tamaño en GB del volumen raíz (root), instance profile, vpc, subred, grupos de seguridad, key pair.
Ingresamos a la instancia haciendo uso de ssh o ssm y verificamos con el siguiente comando que la misma no cuenta con el billing product.
/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'
También podemos observar que no cuenta con accesos a los repositorios públicos de la instancia A usando los comandos zypper ref
.
Podemos tratar de registrarse nuevamente en los repositorios públicos de la instancia A, usando los comandos sugeridos por la documentación de blogs de AWS y de SUSE Linux.
Para verificar registros en SUSE, comando SUSEConnect --status-text
, este comando nos devolverá si estamos registrados o un error al no tener credenciales asociadas a los repositorios públicos de SUSE.
Tratamos de registrarnos nuevamente comandos utilizados:
Comando | Descripción |
SUSEConnect --cleanup |
#Limpia el archivo /etc/SUSEConnect que guarda datos de la nube de suse. |
rm /etc/SUSEConnect |
#Elimina (borra) el archivo /etc/SUSEConnect que guarda datos de la nube de suse. |
rm -f /etc/zypp/{repos,services,credentials}.d/* |
#Elimina (borra) los repositorios de suse y las credenciales usadas para el acceso. |
rm -f /usr/lib/zypp/plugins/services/* |
#Elimina los plugins de servicios de SUSE usados. |
sed -i '/^# Added by SMT reg/,+1d' /etc/hosts |
#Elimina la entrada a los repositorios de públicos (SMT) de suse del archivo /etc/hosts |
update-ca-certificates |
#Actualiza los certificados ssl usados en openssl para conexión a los repos públicos de SUSE |
registercloudguest --clean |
#limppia el archivo de registros cloud guest donde se guardan las credenciales de registro para accesos a los repositorios públicos de SUSE |
/usr/sbin/registercloudguest --force-new |
#Volvemos a registrarnos como usuarios de suse cloud guest |
Igual nos indica que no estamos registrados y no podemos ver los repositorios de SUSE.
Usamos el comando zypper lr
y nos muestra que no tenemos repositorios.
Para recuperar los accesos a los repositorios públicos de SUSE debemos crear una instancia EC2 igual a la anterior que llamamos instancia A, a esta nueva instancia EC2 la llamaremos instancia B.
Se debe tomar en cuenta lo siguiente para crear la instancia de recuperación (instancia B):
-
Debe ser una instancia de pago por uso (PAYG) igual a la instancia A, sin importar la versión del SP solo que sea el mismo numero o versión de SLES en este caso 15.
-
Debe tener el mismo tipo de familia que la instancia A.
-
Debe tener el mismo key pair de la instancia A.
-
Debe estar en la misma VPC, Subnet y AZ que la instancia A.
-
El volumen raíz debe tener la. misma cantidad en GB que la instancia A.
-
Debe tener el mismo instance profile que la instancia A.
Al tener la instancia B levantada (running) procedemos validar los registros para recuperar el billing product de la instancia A.
Observamos que estamos registrados y que podemos ver el billing pproduct desde la instancia B.
Ahora procedemos a detener (apagar) ambas instancias la instancia A y la instancia B.
Luego de que estén detenidas (apagadas) procedemos a quitar los volúmenes root (raíz), de cada instancia de la A y la B.
Y agregamos el volumen root (raíz) de la instancia A en la instancia B, con el mismo Nombre de dispositivo (Device Name): (/dev/sda1
).
Encendemos la instancia By procedemos a validar que cuente con el billing product para recuperar el acceso a los repositorios públicos de SUSE Linux (SMT).
Verificamos que tenemos código de producto (billingProducts) y este debe ser el siguiente ("billingProducts" : [ "bp-6ca54005" ]
), verificamos los registros a suse y el acceso a los repositorios.
Comando SUSEConnect --status-text
Rectificamos acceso a los repositorios comandos zypper lr
= List Repos, zypper ref
= Refrescar repositorios relistar apuntar etc.
Como observamos no tenemos acceso a los repositorios públicos de SUSE Linux, ahora procedemos con la recuperación comandos:
Comando | Descripción |
SUSEConnect --cleanup |
#Limpia el archivo /etc/SUSEConnect que guarda datos de la nube de suse. |
rm /etc/SUSEConnect |
#Elimina (borra) el archivo /etc/SUSEConnect que guarda datos de la nube de suse. |
rm -f /etc/zypp/{repos,services,credentials}.d/* |
#Elimina (borra) los repositorios de suse y las credenciales usadas para el acceso. |
rm -f /usr/lib/zypp/plugins/services/* |
#Elimina los plugins de servicios de SUSE usados. |
sed -i '/^# Added by SMT reg/,+1d' /etc/hosts |
#Elimina la entrada a los repositorios de públicos (SMT) de suse del archivo /etc/hosts |
update-ca-certificates |
#Actualiza los certificados ssl usados en openssl para conexión a los repos públicos de SUSE |
registercloudguest --clean |
#limppia el archivo de registros cloud guest donde se guardan las credenciales de registro para accesos a los repositorios públicos de SUSE |
/usr/sbin/registercloudguest --force-new |
#Volvemos a registrarnos como usuarios de suse cloud guest |
El último comando (/usr/sbin/registercloudguest --force-new
) tarda un poco y debe dar como resultado Registration succeeded
.
Verificamos el registro:
Listamos y Refrescamos los repositorios:
Ya con estos pasos hemos recuperado el acceso a los repositorios públicos de Suse Linux para instancias de pago por uso (PAYG).
Ahora solo nos resta mover los volúmenes adicionales a la instancia con el billing product recuperado, siempre validando el Device Name de cada volumen, descomentamos el /etc/fstab
y procedemos a rectificar los UUID
de los volúmenes y a montar con el comando mount -a
.
Happy Hacking!
Documentación:
Correct Zypper errors on an EC2 SUSE Linux instance
Resolver problemas de actualización del sistema operativo SUSE en instancias EC2
Resolve SUSE OS upgrade issues on EC2 instances