2013-01-22 13 views
12

Possiamo usare AWS::CloudFormation::Init per eseguire comandi e caricare file dopo aver avviato un'istanza. Ma qualcuno sa quali sono gli interni di questa operazione (dalla parte di Amazon)?AWS :: CloudFormation :: Init come funziona?

Quando passiamo un modello, a che punto sono i file oi comandi trasmessi alla VM? Si tratta di una funzionalità Xen (tramite pipe speciale) o tramite la rete?

"Resources": { 
    "MyInstance": { 
    "Type": "AWS::EC2::Instance", 
    "Metadata" : { 
     "AWS::CloudFormation::Init" : { 
     "config" : { 
      "packages" : { 
      : 
      }, 
      "sources" : { 
      : 
      }, 
      "commands" : { 
      : 
      }, 
      "files" : { 
      : 
      }, 
      "services" : { 
      : 
      }, 
      "users" : { 
      : 
      }, 
      "groups" : { 
      : 
      } 
     } 
     } 
    }, 
    "Properties": { 
     : 
    } 
    } 
} 

risposta

26

Creazione di un AWS :: :: CloudFormation Init risorsa come metadati a un'istanza EC2 non causa l'istanza di fare nulla da solo.

Affinché l'istanza esegua effettivamente tutte le operazioni specificate in tale risorsa, deve eseguire lo strumento da riga di comando cfn-init. Su AMI Amazon EC2 questo comando è già installato su /opt/aws/bin/cfn-init. Il comando accetta diverse opzioni, tra cui il nome della risorsa AWS :: CloudFormation :: Init, il nome della risorsa del server EC2 e la regione in cui si sta eseguendo. È inoltre necessario fornire le credenziali di sicurezza AWS.

Se desideri che questo venga eseguito automaticamente quando crei una nuova istanza (l'ho fatto), dovrai utilizzare l'UserData dell'istanza EC2 per creare uno script di shell che l'istanza verrà eseguita al primo avvio e il comando cfn-init al suo interno.

Ho il written about this specific issue nel mio blog di recente.

+1

Grazie, è un'informazione davvero molto utile. Ma voglio ancora sapere, come funziona dietro cfn-init (come quei comandi e file trasmessi alla VM, attraverso la rete o altri dispositivi virtuali?) – SoYoung

+1

cfn-init effettua una richiesta HTTP a un indirizzo Amazon per recuperare il dati nella risorsa. Quindi esegue le azioni specificate nel modello. Dov'è il modello? Da qualche parte su un server controllato da Amazon. –

+0

Quindi, tutte queste azioni sono basate sulla rete? Sembra ragionevole, ma ha ancora qualche situazione scomoda. Se non desidero aprire il SecurityGroup per motivi di sicurezza (solo 22 porte), sarà un problema distribuire automaticamente la mia applicazione. Per essere onesti, spero che vengano trasmessi da pipe o dispositivi speciali (in xen). Ad ogni modo, grazie per il tuo aiuto! – SoYoung

Problemi correlati