GNU/Linux >> Tutoriels Linux >  >> Linux

Les scripts de données utilisateur ne s'exécutent pas sur mon AMI personnalisée, mais fonctionnent dans Amazon Linux standard

User_data n'est exécuté qu'au premier démarrage. Comme votre image est personnalisée, je suppose qu'elle a déjà été démarrée une fois et que user_data est donc désactivé.

Pour Windows, cela peut être fait en cochant une case dans les propriétés des services Ec2. Je regarde en ce moment comment faire ça de manière automatisée à la fin de la création de l'image personnalisée.

Pour Linux, je suppose que le mécanisme est le même et que user_data doit être réactivé sur votre image personnalisée.

Le #cloud-boothook le faire fonctionner car il change le script d'un user_data mécanisme à un cloud-boothook qui s'exécute à chaque démarrage.

MODIF :

Voici le code pour réactiver le démarrage sur windows en utilisant powershell :

$configFile = "C:\\Program Files\\Amazon\\Ec2ConfigService\\Settings\\Config.xml"
[xml] $xdoc = get-content $configFile
$xdoc.SelectNodes("//Plugin") |?{ $_.Name -eq "Ec2HandleUserData"} |%{ $_.State = "Enabled" }
$xdoc.SelectNodes("//Plugin") |?{ $_.Name -eq "Ec2SetComputerName"} |%{ $_.State = "Enabled" }
$xdoc.OuterXml | Out-File -Encoding UTF8 $configFile

$configFile = "C:\\Program Files\\Amazon\\Ec2ConfigService\\Settings\\BundleConfig.xml"
[xml] $xdoc = get-content $configFile
$xdoc.SelectNodes("//Property") |?{ $_.Name -eq "AutoSysprep"} |%{ $_.Value = "Yes" }
$xdoc.OuterXml | Out-File -Encoding UTF8 $configFile

(Je connais la question focus linux, mais ça pourrait aider d'autres...)


Lors de mes tests, il y avait des données d'amorçage dans /var/lib/cloud répertoire.Après avoir effacé ce répertoire, Données utilisateur le script a fonctionné normalement.

rm -rf /var/lib/cloud/*

J'ai également rencontré le même problème sur Ubuntu 16.04 hvm AMI. J'ai signalé le problème au support AWS, mais je n'ai toujours pas trouvé la raison/le bogue exact qui l'affecte.

Mais j'ai quand même quelque chose qui pourrait vous aider.

Avant de prendre AMI, supprimez le répertoire /var/lib/cloud (à chaque fois). Ensuite, lors de la création de l'image, définissez-la sur no-reboot.

Si ces choses ne fonctionnent toujours pas, vous pouvez le tester davantage en forçant les données utilisateur à s'exécuter manuellement. Aussi tailf /var/log/cloud-init-output.log pour l'état cloud-init. Il devrait se terminer par quelque chose comme modules:final pour faire fonctionner vos données utilisateur. Il ne doit pas rester bloqué sur modules:config.

sudo rm -rf /var/lib/cloud/* sudo cloud-init init sudo cloud-init modules -m final

Je ne sais pas trop si les commandes ci-dessus fonctionneront sur CentOS ou non. Je l'ai testé sur Ubuntu.

Dans mon cas, j'ai également essayé de supprimer le répertoire /var/lib/cloud, mais il n'a toujours pas réussi à exécuter les données utilisateur dans notre scénario. Mais j'ai trouvé une solution différente pour cela. Ce que nous avons fait, c'est que nous avons créé un script avec les commandes ci-dessus et que ce script s'exécute pendant le démarrage du système.

J'ai ajouté la ligne ci-dessous dans /etc/rc.local pour que cela se produise.

sudo bash /home/ubuntu/force-user-data.sh || exit 1

Mais voici le hic, il exécutera le script à chaque démarrage, ce qui fera que vos données utilisateur s'exécuteront à chaque démarrage, tout comme #cloud-boothook. Pas de soucis, vous pouvez simplement le modifier en supprimant simplement force-user-data.sh lui-même à la fin. Ainsi, votre force-user-data.sh ressemblera à quelque chose comme

#!/bin/bash sudo rm -rf /var/lib/cloud/* sudo cloud-init init sudo cloud-init modules -m final sudo rm -f /home/ubuntu/force-user-data.sh exit 0

J'apprécierai si quelqu'un peut éclairer la raison pour laquelle il est incapable d'exécuter les données utilisateur.


Linux
  1. Linux - Le casque ne fonctionne pas Linux Mint 18 ?

  2. Kali Linux Amazon EC2 AMI

  3. Tomcat en cours d'exécution, mais le port 8080 ne répond pas

  4. Linux comment copier mais pas écraser ?

  5. fflush() ne fonctionne pas sous Linux

Correction du clic sur le pavé tactile ne fonctionnant pas sous Linux Mint

Linux limits.conf ne fonctionne pas ?

La commande Linux 'll' ne fonctionne pas

Comment installer Postgresql 11 dans Amazon Linux AMI ?

sudo -i mais conserve le répertoire de travail actuel

commande linux trouvée mais introuvable lors de l'utilisation de sudo