2012-12-10 12 views
7

Mentre ho trovato un sacco di documentazione su come creare nuove istanze di un AMI Amazon EC2 con uno script di dati utente (ala Eric Hammond), non ho visto un modo per avviare un già esistente, ma attualmente arrestato, Amazon Istanza EC2 con uno script specificato dall'utente al riavvio.Riavvia un'istanza Amazon EC2 esistente con uno script specificato dall'utente?

Ho un numero di istanze di Amazon EC2 Ubuntu utilizzate per il test e il ripristino di emergenza. Mi piacerebbe essere in grado di avviarne una e, ad esempio, recuperare e ripristinare automaticamente un backup che corrisponde al nostro ambiente di produzione o di staging, se necessario. Preferirei non dover mantenere due istanze separate ciascuna con il proprio IP elastico.

C'è un modo per farlo dalla riga di comando con Amazon ec2tools simile al modo in cui può essere eseguito con il comando ec2-run-instance? Fondamentalmente voglio essere in grado di passare uno script che verrà eseguito come root come se fosse stato chiamato da rc.local o simili.

risposta

0

Purtroppo, la risposta sembra essere che non è attualmente possibile fare ciò che ho chiesto.

0

Hai esaminato modelli di formazione di nubi? http://docs.amazonwebservices.com/AWSCloudFormation/latest/UserGuide/Welcome.html

Immagino che sarebbe semplice eseguire gli script su istanza di riavvio con questo. Ho fatto questo per configurare la server farm di SharePoint su AWS e ho studiato gli script di CF. http://aws.amazon.com/articles/9982940049271604

non ho ancora testato questo scenario particolare, ma credo che questo dovrebbe dare il sostegno necessario

2
  1. È possibile farlo con l'aiuto di strumenti API. Controllare il comando ec2-modify-instance-attribute per la proprietà --user-data.

  2. Inoltre, AWS Console ti permette di fare la stessa cosa su istanza fermato: enter image description here

  3. In alternativa, si può sempre eseguire un comando o uno script tramite ssh come ultimo argomento:

    ssh [[email protected]]hostname [command]

+0

Il problema qui è che, a quanto pare, gli script posti nell'area dei dati utente vengono eseguiti ** solo ** quando un'istanza viene creata per la prima volta da un AMI, È probabile che h non abbia alcun parametro di dati utente nel comando ec2-start-istanze anche se è presente nel comando ec2-run-instances.Il metodo SSH è certamente valido, ma non risponde alla domanda sull'essere in grado di farlo con ec2tools e richiederebbe una sorta di autenticazione per un account nell'istanza di partenza, anche se immagino che non sia un grosso problema visto che siamo usando i file chiave. –

+0

Ho appena completato un semplice test dei dati utente e posso vederlo non viene eseguito dopo il riavvio o l'arresto/avvio. Mi sembra strano che sia possibile cambiarlo, ma non verrà eseguito. Contatterò Amazon su questo. A proposito, date un'occhiata a questa pagina - potrebbe essere anche interessante per voi: https://help.ubuntu.com/community/CloudInit –

+0

Grazie. Apprezzalo. –

0

Si può prendere in considerazione per fermare/riavviare la funzionalità di Amazon EC2 istanza utilizzando AWS Command Line Interface come descritto here.

senza carico elastico Balancer

aws ec2 stop-instances --instance-ids i-1a2b3c4d 
aws ec2 start-instances --instance-ids i-1a2b3c4d 

Con Elastic Load Balancer senza Autoscaling

aws elb deregister-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd 
aws elb register-instances-from-load-balancer --load-balancer-name elb-name --instances i-12ab34cd 

Elastic Load Balancer con Autoscaling

aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 0 --max-size 0 
aws autoscaling update-auto-scaling-group --auto-scaling-group-name "asg-name" --launch-configuration-name "launch-config-name" --min-size 1 --max-size 1