2012-05-24 19 views
8

Sto tentando di caricare i dati utente in un AMI di Ubuntu 12.04 LTS (ami-a29943cb, ma ho provato alcuni altri inutilmente) tramite ec2.run_instances di boto (..., user_data = user_data). Allo stesso modo, non ho avuto successo con la fornitura manuale dei dati utente durante l'avvio delle istanze tramite la console AWS. Non ci sono risultati o messaggi in/var/logs/syslog per nessuno dei metodi che ho provato.Ubuntu AMI non carica i dati utente

user_data simile a quanto segue, letta come una stringa da un file:

#!/usr/bin/env python 

import boto 

AWS_BOOTSTRAP_BUCKET = '' 
AWS_ACCESS_KEY_ID  = '' 
AWS_SECRET_ACCESS_KEY = '' 

# Pull processing script from S3. 
print 'Bootstrapping started.....' 
print 'Connecting to S3...' 
s3  = boto.connect_s3(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
bucket = s3.get_bucket(AWS_BOOTSTRAP_BUCKET) 
print 'Downloading bootstrap file...' 
key = bucket.get_key('xxx') 
key.get_contents_to_filename('xxx') 

print 'Importing Bootstrap file...' 
import xxx 
xxx.process() 

# Shut down the EC2 instance running this process. 
print 'Shutting down this instance...' 
import socket 
desired_hostname = socket.gethostname() 
ec2 = boto.connect_ec2(AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY) 
reservations = ec2.get_all_instances() 
for reservation in reservations: 
    for instance in reservation.instances: 
     if desired_hostname in instance.private_dns_name: 
      instance.terminate() 

Ho inoltre cercato di caricare il file ad un secchio S3 pubblico e il caricamento in questo modo, ancora una volta a non avail:

#include 
https://s3.amazonaws.com/bucket/file.py 

Qualcuno ha qualche consiglio in proposito? Sto fraintendendo completamente lo scopo di user-data/cloud-init o la tecnologia si è semplicemente rotta nell'AMI che sto tentando di utilizzare?

+1

Hai provato questo? 'Suggerimento: se aggiungi set -x nella parte superiore di uno script bash, emetterà tutti i comandi eseguiti. Se aggiungi set -e allo script, lo script user-data uscirà sul primo comando che non ha esito positivo. Questi ti aiutano a identificare rapidamente dove potrebbero essere iniziati i problemi. [Fonte] (http://alestic.com/2009/06/ec2-user-data-scripts) – Daan

risposta

11

E 'difficile sapere cosa è successo, senza un messaggio di errore, ma ci sono alcuni posti si può guardare:

  1. Il file /var/log/cloud-init.log di solito contengono eventuali errori (ad esempio boto mancato import) che si sono verificati durante esempio il bootstrap .
  2. La directory /var/lib/cloud/instance conterrà gli script prime e user-dati scaricati all'istanza
  3. È possibile visualizzare/modificare user_data all'interno della console AWS facendo clic destro l'istanza, per vedere se boto popolato correttamente.

Guardare in quei luoghi dovrebbe aiutare a fornire chiarezza.

So Ubuntu 12.04 è dotato di boto 2.2.2:

[email protected]:/var/lib/cloud/instance# python 
Python 2.7.3 (default, Apr 20 2012, 22:44:07) 
[GCC 4.6.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import boto 
>>> boto.__version__ 
'2.2.2' 

..ma mi chiedo se in realtà è accessibile nella vostra PYTHONPATH in fase di esecuzione.

+0

Grazie per il consiglio meraviglioso. Sarà sicuramente inestimabile per i futuri sviluppatori. Il mio problema era l'AMI di Ubuntu, per qualche ragione, non stava caricando alcun dato utente. Tuttavia, le AMI di Amazon hanno caricato i dati correttamente. – kfr2

+0

Sono prevenuto nei confronti di Ubuntu rispetto alle distribuzioni basate su Redhat come l'AMI di Amazon (pacchetti migliori, eredità Debian, ecc.), Ma a ciascuno di loro. La cosa importante è che hai funzionato! :) – gabrtv

+0

Nel mio caso su Ubuntu 16 LTS /var/log/cloud-init-output.log mi ha dato ulteriori informazioni per risolvere il mio problema di dati utente nell'esecuzione di script di caricamento. – user1811107