Comment puis-je utiliser des données utilisateur pour exécuter un script automatiquement à chaque redémarrage de mon instance Amazon EC2 ?

Date de la dernière mise à jour : 16/04/2020

Je souhaite 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 ?

Courte 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 remplacer la fréquence à laquelle les données utilisateur sont exécutées dans le package cloud-init. Le fichier exécute ensuite 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.

Solution

Avertissement : avant d'entamer la procédure, vérifiez les points suivants :

1.    Assurez-vous que la dernière version de cloud-init est installée et fonctionne correctement sur votre instance EC2.

2.    Pour des raisons de sécurité, créez une stratégie IAM pour restreindre le nombre d'utilisateurs autorisés à ajouter ou à supprimer des données utilisateur via l'API ModifyInstanceAttribute.

3.    Ouvrez la console Amazon EC2.

4.    Arrêtez votre instance.

5.    Sélectionnez Actions, Paramètres de l'instance, puis Afficher/Changer les données utilisateur.

6.    Copiez votre script utilisateur dans la boîte de dialogue Afficher/Changer les données utilisateur, puis sélectionnez Enregistrer.

L'exemple suivant est un script shell qui écrit "Hello World" dans un fichier testfile.txt 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 remplace la fréquence à laquelle les données utilisateur sont exécutées dans le package cloud-init en définissant le paramètre SCRIPTS-USER sur ALWAYS.

Le type de contenu text/x-shellscript fournit le script utilisateur réel à exécuter par le module cloud_final_modules de cloud-init. 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.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d'aide ?