Comment envoyer les sorties de données utilisateur aux journaux de la console sur une instance EC2 exécutant RHEL 7 ou 8 ?

Date de la dernière mise à jour : 14/08/2020

J'essaie de résoudre les problèmes d'amorçage de mon instance Linux RHEL 7 ou 8 Amazon Elastic Compute Cloud (Amazon EC2). Comment puis-je enregistrer l'appel des données utilisateur, puis le transférer vers les journaux de la console ?

Brève description

Pour résoudre les problèmes liés à l'amorçage de votre instance EC2 sans avoir à y accéder via SSH, vous pouvez ajouter du code à votre script bash de données utilisateur qui redirige toutes les sorties vers /var/log/user-data.log et vers /dev/console. Lorsque le code est exécuté, les journaux d'appel des données utilisateur apparaissent dans votre console.

Note : cette résolution est réservée aux versions RHEL 7 et 8. Pour plus d'informations sur Amazon Linux et Amazon Linux 2, consultez la section Comment puis-je envoyer des sorties de données utilisateur aux journaux de la console sur une instance EC2 exécutant Amazon Linux ou Amazon Linux 2 ?

Résolution

1.    Ouvrez la console Amazon EC2.

2.    Lancez une nouvelle instance et SSH dans celle-ci.

3.    Modifiez la ligne GRUB_CMDLINE_LINUX dans /etc/default/grub et remplacez « console=ttyS0,115200n8 console=tty0 » par « console=tty1 console=ttyS0 ».

RHEL 7 :

# cat /etc/default/grub
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau crashkernel=auto"
GRUB_DISABLE_RECOVERY="true"

RHEL 8 :

# cat /etc/default/grub
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true

4.    Récréez le fichier /boot/grub2/grub.cfg :

RHEL 7 :

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-1062.1.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-1062.1.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-026767dbe06a4910a5ce3bd0def903c0
Found initrd image: /boot/initramfs-0-rescue-026767dbe06a4910a5ce3bd0def903c0.img
done

RHEL 8 :

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
done

5.   Arrêtez l'instance.

6.    Créez une nouvelle AMI à partir de l'instance modifiée.

7.    Lancez une nouvelle instance à partir de la nouvelle AMI.

8.    Saisissez la commande suivante pour rediriger la console de sortie des données utilisateur :

#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
  yum -y update
  echo "Hello from user-data!"

La ligne suivante redirige la sortie des données utilisateur :

exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1

Voici un exemple de sortie de console :

RHEL 7 :

  subscription-manager.x86_64 0:1.24.26-3.el7_8
  subscription-manager-rhsm.x86_64 0:1.24.26-3.el7_8
  subscription-manager-rhsm-certificates.x86_64 0:1.24.26-3.el7_8
  sudo.x86_64 0:1.8.23-9.el7
  systemd.x86_64 0:219-73.el7_8.8
  systemd-libs.x86_64 0:219-73.el7_8.8
  systemd-sysv.x86_64 0:219-73.el7_8.8
  teamd.x86_64 0:1.29-1.el7
  tuned.noarch 0:2.11.0-8.el7
  tzdata.noarch 0:2020a-1.el7
  util-linux.x86_64 0:2.23.2-63.el7
  yum.noarch 0:3.4.3-167.el7
  yum-utils.noarch 0:1.1.31-54.el7_8

Replaced:
  iwl7265-firmware.noarch 0:22.0.7.0-72.el7

Complete!
+ echo 'Hello from user-data!'
Hello from user-data!

RHEL 8 :

Installed:
  grub2-tools-efi-1:2.02-82.el8_2.1.x86_64

  kernel-4.18.0-193.13.2.el8_2.x86_64

  kernel-core-4.18.0-193.13.2.el8_2.x86_64

  kernel-modules-4.18.0-193.13.2.el8_2.x86_64

  linux-firmware-20191202-97.gite8a0f4c9.el8.noarch

Complete!
+
echo 'Hello from user-data!'
Hello from user-data!

Cette page vous a-t-elle été utile ?


Besoin d'aide pour une question technique ou de facturation ?