Uno dei fattori importanti che determina come assemblare server, AMI e pianificazione dell'infrastruttura è rispondere alla domanda: In produzione, quanto velocemente avrò bisogno di una nuova istanza lanciata?
La risposta a questa domanda determinerà quanto si cuoce nell'AMI rispetto a quanto si costruisce dopo l'avvio.
NOTA: La mia esperienza è con Chef Server, quindi userò la terminologia Chef ma i concetti sono gli stessi per qualsiasi altro stack di gestione della configurazione.
La regola generale è di trattare la vostra "infrastruttura come codice". Ciò significa pensare al processo di avvio delle istanze, alla creazione di utenti su quella macchina e al processo di gestione di un file known_hosts e delle chiavi SSH allo stesso modo del codice dell'applicazione. Essere in grado di tenere traccia delle modifiche apportate all'infrastruttura nel codice sorgente semplifica la gestione, le ridistribuzioni e persino l'infrastruttura.
This Chef Introduction copre la terminologia in Cuoco di libri di cucina, ricette, risorse e altro. Ti mostra come costruire un semplice stack LAMP e come puoi riavviarlo altrettanto facilmente con un solo comando.
Quindi, dato l'esempio nella sua interrogazione, ad alto livello che vorrei fare le seguenti operazioni:
- lancio una base di Ubuntu Linux AMI (attualmente 14,04) con uno script Cloudformation.
- Nella sezione Dati utente della configurazione dell'istanza, avviare il processo di installazione del client Chef.
- Esegui una ricetta per creare un utente.
- esegue una ricetta per creare il file known_hosts per l'utente vengono utilizzati
Strumenti come Chef, perché si è in grado di abbattere l'infrastruttura in piccoli blocchi di codice che svolgono funzioni specifiche. Esistono già numerosi libri di cucina built and available che eseguono gli elementi costitutivi fondamentali per la creazione di servizi, l'installazione di pacchetti software, ecc.
Tutto ciò detto, ci sono alcune volte in cui devi discostarti dalle migliori pratiche nell'interesse del tuo dominio e dei tuoi requisiti specifici. Potrebbero esserci situazioni in cui, dati tutti i vantaggi di una gestione dell'infrastruttura, sarà comunque necessario inserire elementi nell'AMI.
Supponiamo che l'applicazione esegua l'elaborazione delle immagini e che sia necessario utilizzare ImageMagick. Supponiamo che sarà necessario creare ImageMagick dal sorgente. Se lo facessi tramite Chef Recipes, questo potrebbe aggiungere altri 7 minuti di compilazione di ImageMagick al normale tempo di avvio dell'istanza. Se attendere 10-12 minuti è troppo lungo perché una nuova istanza venga online, si consiglia di prendere in considerazione la cottura della propria AMI con ImageMagick già compilata e installata.
Questa è una soluzione accettabile, ma è necessario tenere presente che la gestione della propria flotta di AMI preconfezionate aggiunge ulteriore sovraccarico dell'infrastruttura. Sarà necessario mantenere aggiornate le AMI personalizzate man mano che vengono rilasciate nuove AMI, espandersi in diversi tipi di istanza e in diverse regioni AWS.
avete bisogno di burattinaio o chef per eseguire il lavoro di automazione con 'dati utente' definiti in CloudFormation. – BMW
Grazie. Puoi per favore spiegare cosa dovrei mettere nell'AMI ?? Come posso decidere se qualcosa deve essere nell'AMI o essere configurato tramite 'dati utente'? –
AWS ha una pagina completa che discute le opzioni https://aws.amazon.com/answers/configuration-management/aws-ami-design/ – Jason