Migrazione da Chef Server a Stacks AWS OpsWorks - AWS OpsWorks

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione da Chef Server a Stacks AWS OpsWorks

Importante

Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disabilitato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il AWS Support Team su AWS re:post o tramite Premium AWS Support.

Poiché AWS OpsWorks Stacks è basato su Chef, la migrazione da Chef Server a AWS OpsWorks Stacks è relativamente semplice. Questo argomento presenta le linee guida per modificare il codice di Chef Server in modo da utilizzarlo con AWS OpsWorks Stacks.

Nota

Sconsigliamo di eseguire la migrazione agli stack tramite versioni di Chef precedenti alla 11.10, che sono basate su chef-solo e non supportano la ricerca o i contenitori di dati.

Mappatura di ruoli a livelli

Chef Server utilizza ruoli per rappresentare e gestire istanze con lo stesso scopo e la stessa configurazione, ad esempio un set di istanze ciascuna delle quali ospita un server applicazioni Java. Un livello AWS OpsWorks Stacks ha essenzialmente lo stesso scopo di un ruolo Chef. Un layer è un modello per creare un set di istanze Amazon Elastic Compute Cloud (Amazon EC2) con la stessa configurazione, pacchetti installati, procedura di distribuzione delle applicazioni e così via.

AWS OpsWorks Stacks include un set di livelli integrati per diversi tipi di server applicativi, un load balancer HAProxy, un database master MySQL e un master di monitoraggio Ganglia. Ad esempio, il livello Java App Server integrato è un modello per la creazione di istanze che ospitano un server Tomcat.

Per migrare a AWS OpsWorks Stacks, è necessario associare ogni ruolo a un livello che fornisca funzionalità equivalenti. Per alcuni ruoli, potresti essere in grado di utilizzare semplicemente uno dei livelli predefiniti. Altri ruoli potrebbero richiedere diversi gradi personalizzazione. Inizia esaminando le funzionalità dei livelli predefiniti, tra cui le ricette associate a ognuno, per determinare se uno di questi livelli sia in grado di offrire almeno parte delle funzionalità del tuo ruolo. Per ulteriori informazioni sui livelli predefiniti, consulta Livelli e AWS OpsWorks Stacks Layer Reference. Per esaminare le ricette integrate, consulta l'archivio pubblico di AWS OpsWorks Stacks. GitHub

Il modo di procedere dipende dal grado di corrispondenza di un livello a ogni ruolo, come descritto di seguito.

Un livello predefinito supporta tutte le funzionalità del ruolo

Se necessario, puoi utilizzare direttamente il livello predefinito, con personalizzazioni minime. Ad esempio, se un ruolo supporta un server Tomcat, le ricette del livello Java App Server potrebbero già gestire tutte le attività del ruolo, magari con qualche modesta personalizzazione. Ad esempio, puoi fare in modo che le ricette predefinite del livello utilizzino impostazioni di configurazione di Tomcat o Apache personalizzate sostituendo gli attributi o i modelli appropriati.

Un livello predefinito supporta alcune, ma non tutte, le funzionalità del ruolo

Potresti essere in grado di utilizzare un livello predefinito estendendolo. Questa situazione comporta in genere l'implementazione di ricette personalizzate per supportare le funzionalità mancanti e assegnare le ricette agli eventi del ciclo di vita del livello. Ad esempio, supponiamo che il tuo ruolo installi un server Redis nelle stesse istanze che ospitano un server Tomcat. È possibile estendere il livello Java App Server in modo che corrisponda alla funzionalità del ruolo implementando una ricetta personalizzata per installare Redis sulle istanze del livello e assegnando la ricetta all'evento Setup del livello.

Nessun livello predefinito supporta in modo adeguato le funzionalità del ruolo

Implementa un livello personalizzato. Ad esempio, supponiamo che il tuo ruolo supporti un server di database MongoDB, che non è supportato da alcuno dei livelli predefiniti. Puoi fornire questo supporto implementando ricette per l'installazione dei pacchetti necessari, la configurazione del server e così via e quindi assegnare le ricette a eventi del ciclo di vita di un livello personalizzato. In genere, puoi utilizzare almeno una delle ricette del ruolo a questo scopo. Per ulteriori informazioni su come implementare un livello personalizzato, consulta Creazione di un livello server Tomcat personalizzato.

Utilizzo di contenitori di dati

Chef Server ti permette di passare dati definiti dall'utente alle ricette utilizzando contenitori di dati.

  • I dati vengono archiviati con i libri di ricette e Chef li installa in ogni istanza.

  • Puoi utilizzare contenitori di dati crittografati per dati sensibili, ad esempio le password.

AWS OpsWorks Stacks supporta i data bag; le ricette possono recuperare i dati utilizzando esattamente lo stesso codice di Chef Server. Tuttavia, il supporto presenta le limitazioni e differenze seguenti:

  • I contenitori di dati sono supportati solo su stack Linux Chef 11.10 e versioni successive.

    Gli stack Windows e Linux che eseguono versioni precedenti di Chef non supportano i contenitori di dati.

  • Non puoi archiviare contenitori di dati nel repository dei libri di ricette.

    Devi invece utilizzare codice JSON personalizzato per gestire i dati del contenitore di dati.

  • AWS OpsWorks Stacks non supporta sacchetti di dati crittografati.

    Se devi archiviare dati sensibili in forma crittografata, ad esempio password o certificati, ti consigliamo di archiviarli in un bucket S3 privato. Potrai quindi creare una ricetta personalizzata che utilizza l'SDK Amazon per Ruby per recuperare i dati. Per vedere un esempio, consulta Utilizzo dell'SDK for Ruby.

Per ulteriori informazioni, consulta Utilizzo di contenitori di dati.

Chef Server archivia le informazioni di configurazione degli stack, come indirizzi IP e configurazioni dei ruoli, nel server. Le ricette utilizzano Chef search per recuperare questi dati. AWS OpsWorks Stacks utilizza un approccio leggermente diverso. Ad esempio, gli stack Linux Chef 11.10 sono basati sulla modalità locale client di Chef, un'opzione client di Chef che esegue una versione leggera di Chef Server, spesso denominata Chef Zero, in locale nell'istanza. Chef Zero supporta la ricerca sui dati archiviati nell'oggetto nodo dell'istanza.

Invece di archiviare i dati dello stack su un server remoto, AWS OpsWorks Stacks aggiunge un set di attributi di configurazione e distribuzione dello stack all'oggetto nodo di ciascuna istanza per ogni evento del ciclo di vita. Questi attributi rappresentano uno snapshot della configurazione dello stack. Gli attributi utilizzano la stessa sintassi di Chef Server e rappresentano la maggior parte dei dati che le ricette devono recuperare dal server.

Spesso non è necessario modificare il codice dipendente dalla ricerca delle ricette per Stacks. AWS OpsWorks Poiché Chef search opera sull'oggetto node, che include la configurazione dello stack e gli attributi di distribuzione, le query di ricerca in AWS OpsWorks Stacks di solito funzionano esattamente come con Chef Server.

L'eccezione principale è causata dal fatto che gli attributi di configurazione e distribuzione dello stack contengono solo dati di cui AWS OpsWorks Stacks è a conoscenza quando installa gli attributi sull'istanza. Se crei o modifichi un attributo localmente su una particolare istanza, tali modifiche non vengono propagate agli AWS OpsWorks Stacks e non vengono incorporate negli attributi di configurazione e distribuzione dello stack installati sulle altre istanze. Puoi utilizzare la ricerca per recuperare il valore dell'attributo solo nell'istanza specifica. Per ulteriori informazioni, consulta Utilizzo della ricerca di Chef.

Per compatibilità con Chef Server, AWS OpsWorks Stacks aggiunge un set di role attributi all'oggetto node, ognuno dei quali contiene uno degli attributi di livello dello stack. Se la ricetta utilizza roles come chiave di ricerca, non dovrai modificare il codice di ricerca. La query restituisce automaticamente i dati per il livello corrispondente. Ad esempio, entrambe le query seguenti restituiscono gli attributi del livello php-app.

phpserver = search(:node, "layers:php-app").first
phpserver = search(:node, "roles:php-app").first

Gestione di libri di ricette e ricette

AWS OpsWorks Stacks e Chef Server gestiscono i libri di cucina e le ricette in modo leggermente diverso. Con Server Chef:

  • Devi fornire tutti i libri di ricette, implementandoli personalmente o utilizzando libri di ricette della community.

  • Devi archiviare i libri di ricette nel server.

  • Devi eseguire le ricette manualmente o in base a una pianificazione regolare.

Con AWS OpsWorks Stacks:

  • AWS OpsWorks Stacks fornisce uno o più libri di cucina per ciascuno dei livelli integrati. Questi libri di ricette gestiscono le attività standard, come l'installazione e la configurazione del software di un livello predefinito e la distribuzione di app.

    Per gestire le attività che non vengono eseguite dai libri di ricette predefiniti, devi aggiungere libri di ricette personalizzati allo stack o utilizzare libri di ricette della community.

  • I libri di cucina AWS OpsWorks Stacks vengono archiviati in un archivio remoto, ad esempio un bucket S3 o un repository Git.

    Per ulteriori informazioni, consulta Archiviazione di libri di ricette.

  • Puoi eseguire le ricette manualmente, ma in genere AWS OpsWorks Stacks esegue le ricette automaticamente in risposta a una serie di eventi del ciclo di vita che si verificano in punti chiave durante il ciclo di vita di un'istanza.

    Per ulteriori informazioni, consulta Esecuzione di ricette.

  • AWS OpsWorks Stacks supporta Berkshelf solo sugli stack Chef 11.10. Se utilizzi Berkshelf per gestire le dipendenze dei libri di ricette, non puoi utilizzare stack che eseguono Chef 11.4 o versioni precedenti.

    Per ulteriori informazioni, consulta Utilizzo di Berkshelf.

Archiviazione di libri di ricette

Con Chef Server, devi archiviare i libri di ricette nel server e distribuirli dal server alle istanze. Con AWS OpsWorks Stacks, memorizzi i libri di cucina in un repository: un archivio S3 o HTTP o un repository Git o Subversion. Quando installi i libri di cucina, specifichi le informazioni di cui AWS OpsWorks Stacks ha bisogno per scaricare il codice dal repository nelle istanze di uno stack.

Per eseguire la migrazione da Chef Server, devi inserire i libri di ricette in uno di questi repository. Per informazioni su come strutturare un repository di libri di ricette, consulta Repository dei libri di ricette.

Esecuzione di ricette

In AWS OpsWorks Stacks, ogni livello ha una serie di eventi del ciclo di vita (Setup, Configure, Deploy, Undeploy e Shutdown), ognuno dei quali si verifica in un momento chiave durante il ciclo di vita di un'istanza. Per eseguire una ricetta personalizzata, in genere devi assegnarla all'evento appropriato nel livello corretto. Quando si verifica l'evento, AWS OpsWorks Stacks esegue le ricette associate. Ad esempio, poiché l'evento Setup (Impostazione) si verifica dopo che un'istanza completa la procedura di avvio, in genere assegnerai ricette a questo evento per l'esecuzione di attività come l'installazione e la configurazione di pacchetti e l'avvio di servizi.

Puoi eseguire manualmente le ricette utilizzando il comando dello stack Execute Recipes (Esegui ricette). Questo comando è utile per lo sviluppo e i test, ma puoi utilizzarlo anche per eseguire ricette che non sono mappate ad alcun evento del ciclo di vita. Puoi utilizzare il comando Execute Recipes (Esegui ricette) anche per attivare manualmente eventi Setup (Impostazione) e Configure (Configurazione).

Oltre alla console AWS OpsWorks Stacks, puoi utilizzare la CLI o gli SDK di AWS per eseguire ricette. Questi strumenti supportano tutte le azioni API di AWS OpsWorks Stacks, ma sono più semplici da utilizzare rispetto all'API. Utilizza il comando create-deployment dell'interfaccia a riga di comando per attivare un evento del ciclo di vita, che esegue tutte le ricette associate. Puoi utilizzare questo comando anche per eseguire una o più ricette senza attivare alcun evento. Il codice SDK equivalente dipende dal linguaggio specifico, ma è generalmente simile al comando dell'interfaccia a riga di comando.

Gli esempi seguenti presentano due modi di utilizzare il comando create-deployment dell'interfaccia a riga di comando per automatizzare la distribuzione dell'applicazione.

  • Distribuzione dell'app in base a una pianificazione regolare aggiungendo un livello personalizzato con una singola istanza allo stack.

    Aggiunta di una ricetta di impostazione personalizzata al livello che crea un processo cron nell'istanza per eseguire il comando in base a una pianificazione specificata. Per un esempio di come utilizzare una ricetta per creare un processo cron, consulta Esecuzione di processi Cron sulle istanze Linux.

  • Aggiunta di un'attività alla pipeline di integrazione continua che utilizza il comando create-deployment dell'interfaccia a riga di comando per distribuire l'app.

Utilizzo di ambienti Chef

AWS OpsWorks Stacks non supporta gli ambienti Chef; restituisce sempre. node.chef_environment _default