cloudformation di autogenerazione. Bene o male

-1

nella mia azienda stiamo utilizzando AWS Cloudformation per gestire la nostra infrastruttura. I modelli sono scritti in JSON. Il problema è che i modelli aumentano di giorno in giorno. Linee 5k. La politica aziendale è quella di scrivere determinati progetti in un modello (ad esempio, non sono in grado di suddividere il codice in modelli separati). E di conseguenza i template stanno diventando davvero enormi.

Ho giocato con i generatori di yaml, json e cloud. Ho trovato un bel generatore yaml (Spiff). Usandolo posso ridurre i nostri template di quasi il 90% in alcuni casi.

Pensi che sia una buona idea generare modelli di cloudformation al volo e lavorare principalmente con i generatori yaml Spiff? O ci sarà un terribile costo che pagherò entro i prossimi due mesi. Tieni presente che Spiff è un po 'criptico e non puro Yaml, quindi c'è una curva di apprendimento per le persone che mantengono i modelli dopo di me.

Che ne pensi?

    
posta Moataz Elmasry 04.08.2017 - 21:02
fonte

2 risposte

2

Ho utilizzato il cfndsl RubyGem per circa 9 mesi in un paio di progetti, e sono stato molto contento per i seguenti motivi:

  • Commenti
    Inestimabile quando i tuoi script diventano più complessi.
  • Gli articoli correlati sono collocati nell'origine Ad esempio, Output per una risorsa può trovarsi fisicamente nel file di origine accanto a quella risorsa, piuttosto che in un'altra parte del file non correlata. Il generatore JSON assicura che tutte le definizioni vadano al loro posto appropriato.
  • File delle proprietà
    Trovo che io abbia il minimo bisogno di parametri di stack; aggiungono solo un'altra cosa che non è tracciata nel controllo del codice sorgente.
  • Sostituzioni di stringhe di rubini
    Molto più facile da usare rispetto alla funzione intrinseca Fn:Sub , anche se uso ancora la funzione quando voglio includere elementi come l'ID account.
  • Stack guidato dalla configurazione
    Questo è il più grande: tutte le nostre configurazioni dell'applicazione (esempio, gruppo di ridimensionamento automatico, bilanciamento del carico, DNS) sono piuttosto simili e possono essere rappresentate in poche righe di configurazione. Poiché lo stack JSON viene generato da un linguaggio di programmazione completo, posso eseguire il loop sulla configurazione e utilizzare le istruzioni if-then per definire le risorse pertinenti. Un semplice modello di app a 100 righe serve a generare gli stack per una dozzina o più app.

CFNDSL non è l'unica opzione; è appena successo di essere qualcosa che mi è stato presentato al momento giusto. Ho anche sentito parlare di un generatore di stack scritto in Python, e in un momento diverso avrei potuto preferirlo.

Bottom line: generare stack in modo programmatico è molto meglio che mantenere un formato puramente dichiarativo, specialmente JSON.

    
risposta data 08.08.2017 - 02:02
fonte
0

Potrei essere un po 'in ritardo con la mia risposta, ma c'è uno cfpack strumento che ho creato per dividere i modelli di CloudFormation in quelli più piccoli. L'idea è che quando dividi il tuo modello principale, crei modelli piccoli che sono completamente compatibili e in realtà sono modelli CF da solo. Quindi, quando esegui il comando cfpack bulid , combina tutti i modelli e crea il file modello principale che può essere distribuito a CloudFormation.

Un altro aspetto positivo è che puoi creare modelli riutilizzabili e condividerli tra diversi progetti.

Quindi, dai un'occhiata, forse può aiutarti anche tu. Qui è un esempio di utilizzo, controlla la cartella templates (il progetto non è t fatto ancora, ma dimostra come usare cfpack).

    
risposta data 13.01.2019 - 21:27
fonte

Leggi altre domande sui tag