Je veux automatiser le lancement d’un ensemble d’instances Linux EC2.
En gros, je veux écrire un script / programme qui:
En utilisant VMWare, je le ferais généralement en utilisant vmrun ou le SDK Vix.
Quelles sont les options dans Amazon AWS / EC2?
La réponse dépend un peu de ce que vous exécutez sur AMI, car les fonctionnalités fournies dépendent entièrement de l’AMI.
Amazon AMIS Linux et les AMI officielles Ubuntu ont le package cloud-init installé. Il existe plusieurs façons de déclencher des actions de démarrage, mais celle qui correspond le mieux à votre demande (et mon préféré parce que je l’ai inventé) est le concept d’un script de données utilisateur .
Vous pouvez simplement passer n’importe quel script (en commençant par les deux caractères #!) En tant que données utilisateur lors du démarrage des instances EC2. Il sera exécuté en tant que root lors du premier démarrage de l’instance.
Pour un exemple spécifique de la façon dont cela fonctionne, j’utilise cette technique exacte dans mon article récent: Téléchargement d’une clé d’hôte ssh connue dans le script de données utilisateur EC2
Vous souhaitiez également exécuter plusieurs instances EC2 avec le même script. La commande ec2-run-instances et les API et la console Web associées vous permettent de spécifier le nombre d’instances à démarrer avec les mêmes données utilisateur. Par exemple:
ec2-run-instances \ --instance-count 10 \ --user-data-file $MYSCRIPT \ --key $USER \ $SOMEAMI
Si vous exécutez actuellement une AMI sur laquelle cloud-init n’est pas installé, vous pouvez effectuer l’une des opérations suivantes:
Passez à une AMI sur laquelle cloud-init est installé ou
Créez une version personnalisée de votre AMI sur laquelle cloud-init est installé ou
Ecrivez un script d’encapsulage plus compliqué qui enregistre tous les identifiants d’instance après leur lancement, attend que toutes les instances passent à l’état d’exécution, attend que sshd accepte les connexions, télécharge votre script de démarrage sur chaque instance et exécute le script de démarrage sur chaque instance.
J’ai un tutoriel pour exécuter le script dans le “cloud-init” qui s’exécute à chaque démarrage d’AWS EC2.
définir le fichier de configuration (AWS CentOS6) et
exécuter les scripts lorsque vous démarrez l’EC2
Pour définir le fichier de configuration sous Linux, vous pouvez vous référer à configure cloud-init sur AWS Linux .
J’utilise personnellement AWS VPC / EBS qui a été configuré sur Linux AMI, je n’ai rien touché dans le fichier de configuration /etc/cloud/cloud.cfg
mais mon script de démarrage dans le cloud-init fonctionne correctement.