Comment puis-je utiliser des données utilisateur pour exécuter automatiquement un script à chaque redémarrage de mon instance Linux Amazon EC2 ?
Date de la dernière mise à jour : 13-07-2022
Je veux utiliser les données utilisateur pour exécuter un script chaque fois que mon instance Amazon Elastic Compute Cloud (Amazon EC2) est redémarrée. Comment procéder ?
Brève description
Par défaut, les scripts de données utilisateur et les directives cloud-init sont uniquement exécutés pendant le premier cycle de démarrage lorsqu'une instance EC2 est lancée. Cependant, vous pouvez configurer votre script de données utilisateur et vos directives cloud-init avec un fichier mime en plusieurs parties. Un fichier mime en plusieurs parties permet à votre script de modifier la fréquence d’exécution des données utilisateur dans le package cloud-init. Ensuite, le fichier exécute le script utilisateur. Pour plus d'informations sur les fichiers mime en plusieurs parties, consultez Mime Multi Part Archive sur le site web cloud-init.
Remarque : il est recommandé de créer un instantané de votre instance avant de procéder à la résolution suivante.
Solution
Avertissement : avant d'entamer la procédure, vérifiez les points suivants :
- L'arrêt et le redémarrage de l'instance effacent toutes les données des volumes de stockage d'instances. Assurez-vous de sauvegarder sur les volumes de stockage d’instances toutes les données que vous souhaitez conserver. Pour plus d'informations, voir Déterminer le type d'appareil racine de votre AMI.
- Si votre instance EC2 possède une adresse IPv4 publique attribuée automatiquement, l'arrêt et le redémarrage de l'instance entraînent une modification de l'adresse IPv4. Si vous avez besoin que l'instance dispose d'une adresse IPv4 publique statique, envisagez d'utiliser une adresse IP Elastic. Les adresses IP Elastic persistent après l'arrêt et le redémarrage d'une instance.
1. Assurez-vous que la version la plus récente de cloud-init est installée et fonctionne correctement sur votre instance EC2.
2. Pour des raisons de sécurité, créez une politique IAM pour restreindre le nombre d'utilisateurs autorisés à ajouter ou à supprimer des données utilisateur par le biais de l'API ModifyInstanceAttribute.
3. Ouvrez la console Amazon EC2.
5. Choisissez Actions, ensuite Paramètres de l'instance, puis Modifier les données utilisateur.
6. Copiez votre script utilisateur dans la boîte de dialogue Modifier les données utilisateur, puis sélectionnez Enregistrer.
L’exemple qui suit est un script Shell qui inscrit un fichier testfile.txt « Hello World » dans un répertoire /tmp.
Content-Type: multipart/mixed; boundary="//"
MIME-Version: 1.0
--//
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"
#cloud-config
cloud_final_modules:
- [scripts-user, always]
--//
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="userdata.txt"
#!/bin/bash
/bin/echo "Hello World" >> /tmp/testfile.txt
--//--
Par défaut, cloud-init autorise un type de contenu uniquement à la fois dans les données utilisateur. Toutefois, cet exemple montre les types de contenu text/cloud-config et text/x-shellscript dans un fichier mime en plusieurs parties.
Le type de contenu text/cloud-config modifie la fréquence d’exécution des données utilisateurs dans le package cloud-init en attribuant au paramètre SCRIPTS-USER la valeur ALWAYS.
Le type de contenu text/x-shellscript fait en sorte que le script utilisateur actuel soit exécuté par le module cloud-init cloud_final_modules. Dans cet exemple, il n'y a qu'une seule ligne à exécuter, qui est /bin/echo "Hello World." >> /tmp/testfile.txt.
Remarque: Remplacez la ligne /bin/echo "Hello World." >> /tmp/testfile.txt par le script shell que vous souhaitez exécuter lors du démarrage de l'instance.
7. Redémarrez votre instance EC2 et vérifiez que votre script s'exécute correctement.
Informations connexes
Cet article vous a-t-il été utile ?
Avez-vous besoin d'aide pour une question technique ou de facturation ?