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à.
Esecuzione di una ricetta su un' AWS OpsWorks istanza Stacks Linux
Importante
Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato 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
Test Kitchen e Vagrant forniscono un modo semplice ed efficiente per implementare i libri di cucina, ma per verificare che le ricette di un libro di cucina funzionino correttamente in produzione, devi eseguirle su un'istanza Stacks. AWS OpsWorks In questo argomento viene descritto come installare un libro di ricette personalizzato in un'istanza Linux AWS OpsWorks Stacks ed eseguire una semplice ricetta. L'argomento fornisce inoltre alcuni suggerimenti per correggere in modo efficiente i bug della ricetta.
Per informazioni su come eseguire ricette su istanze Windows, consulta Esecuzione di una ricetta su un'istanza Windows.
Argomenti
Creazione ed esecuzione della ricetta
In primo luogo, devi creare uno stack. Di seguito viene brevemente descritto come creare uno stack per questo esempio. Per ulteriori informazioni, consulta Creare un nuovo stack.
Per creare uno stack
-
Aprire la console AWS OpsWorks Stacks
e fare clic su Add Stack (Aggiungi stack). -
Specificare le impostazioni seguenti, accettare i valori predefiniti di altre impostazioni e fare clic su Add Stack (Aggiungi stack).
-
Nome — OpsTest
-
SSHChiave predefinita: una coppia di EC2 chiavi Amazon
Se devi creare una coppia di EC2 chiavi Amazon, consulta Amazon EC2 Key Pairs. Nota che la key pair deve appartenere alla stessa AWS regione dell'istanza. L'esempio utilizza la regione predefinita degli Stati Uniti occidentali (Oregon).
-
-
Fare clic su Add a layer (Aggiungi un livello) e aggiungere un livello personalizzato allo stack con le impostazioni seguenti.
-
Nome: OpsTest
-
Nome abbreviato: opstest
Per gli stack Linux sarà appropriato qualunque tipo di livello, tuttavia l'esempio non richiede nessuno dei pacchetti che vengono installati da altri tipi di livello, pertanto un livello personalizzato è l'approccio più semplice.
-
-
Aggiungere un'istanza 24/7 con impostazioni predefinite al livello e avviarla.
Durante l'avvio dell'istanza, che in genere richiede diversi minuti, puoi creare il ricettario. Questo esempio utilizza una versione leggermente modificata della ricetta da Logica condizionale, che crea una directory dati il cui nome dipende dalla piattaforma.
Per configurare il libro di ricette
-
Creare una directory in
opsworks_cookbooks
denominataopstest
e accedervi. -
Creare un file
metadata.rb
con il seguente contenuto e salvarlo inopstest
.name "opstest" version "0.1.0"
-
Creare una directory
recipes
inopstest
. -
Creare un file
default.rb
con la seguente ricetta e salvarlo nella directoryrecipes
.Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "centos" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) directory data_dir do mode 0755 owner 'root' group 'root' recursive true action :create end
La ricetta registra un messaggio, ma lo fa chiamando
Chef::Log.info
. Non stai usando Test Kitchen per questo esempio, quindi il metodo non è molto utile.log
Chef::Log.info
inserisce il messaggio nel registro di Chef, che puoi leggere al termine dell'esecuzione di Chef. AWS OpsWorks Stacks fornisce un modo semplice per visualizzare questi registri, come descritto più avanti.Nota
I log di Chef in genere contengono una notevole quantità di informazioni di routine, relativamente poco interessanti. I caratteri "*" che racchiudono il testo del messaggio ne semplificano l'identificazione.
-
Creare un archivio
.zip
diopsworks_cookbooks
. Per installare il tuo ricettario su un'istanza di AWS OpsWorks Stacks, devi archiviarlo in un repository e fornire a AWS OpsWorks Stacks le informazioni necessarie per scaricare il ricettario sull'istanza. I libri di ricette possono essere archiviati in uno qualsiasi dei diversi tipi di repository supportati. Questo esempio memorizza un file di archivio contenente i libri di cucina in un bucket Amazon S3. Per ulteriori informazioni sui repository dei libri di ricette, consulta Repository dei libri di ricette.Nota
Per semplicità, questo esempio archivia l'intera directory
opsworks_cookbooks
. Tuttavia, significa che AWS OpsWorks Stacks scaricherà tutti i libri di cucina presenti nell'opsworks_cookbooks
istanza, anche se ne utilizzerai solo uno. Per installare solo il libro di ricette di esempio, crea un'altra directory padre in cui sposteraiopstest
. Quindi crea un archivio.zip
della directory padre e utilizzalo al posto diopsworks_cookbooks.zip
.I contenuti distribuiti ai bucket Amazon S3 potrebbero contenere informazioni dei clienti. Per ulteriori informazioni sulla rimozione di dati sensibili, vedi Come svuotare un bucket S3? o Come eliminare un bucket S3?.
-
Carica l'archivio in un bucket Amazon S3, rendilo pubblico e registra l'archivio. URL
Adesso puoi installare il libro di ricette ed eseguire la ricetta.
Per eseguire la ricetta
-
Modificare lo stack per abilitare i libri di ricette personalizzati e specificare le impostazioni seguenti.
-
Tipo di repository: S3 Archive
-
Repository URL: l'archivio dei libri di cucina che hai registrato in precedenza URL
Utilizzare i valori predefiniti per altre impostazioni e fare clic su Save (Salva) per aggiornare la configurazione dello stack.
-
-
Eseguire il comando dello stack Update Custom Cookbooks (Aggiorna libri di ricette personalizzati), che installa la versione corrente dei libri di ricette personalizzati nelle istanze dello stack. Se è presente una versione precedente dei libri di cucina, verrà sovrascritta da questo comando.
-
Eseguire la ricetta utilizzando il comando dello stack Execute Recipes (Esegui ricette) con Recipes to execute (Ricette da eseguire) impostato su
opstest::default
. Questo comando avvia un'esecuzione di Chef, con un elenco di esecuzione costituito daopstest::default
.
Dopo aver eseguito correttamente la ricetta, puoi verificarla.
Per verificare opstest
-
Il primo passaggio consiste nell'esaminare il log di Chef. Fare clic su show (mostra) nella colonna Log (Registro) dell'istanza opstest1 per visualizzare il registro. Scorrere e visualizzare il messaggio di log verso il basso.
... [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache. [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache. [2014-07-31T17:01:46+00:00] INFO: ******Creating a data directory.****** [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3) ...
-
Utilizzato SSH per accedere all'istanza ed elencare il contenuto di.
/srv/www/
Se hai seguito tutti i passaggi, vedrai /srv/www/config
piuttosto che la directory /srv/www/shared
prevista. Nella sezione seguente vengono fornite alcune linee guida per la risoluzione rapida di tali bug.
Esecuzione automatica della ricetta
Il comando Execute Recipes (Esegui ricette) è un metodo utile per testare ricette personalizzate. Per tale motivo viene utilizzato nella maggior parte degli esempi. Tuttavia, in pratica in genere si eseguono le ricette in momenti standard del ciclo di vita di un'istanza, ad esempio dopo il termine dell'avvio dell'istanza o quando si distribuisce un'app. AWS OpsWorks Stacks semplifica l'esecuzione di ricette sull'istanza supportando una serie di eventi del ciclo di vita per ogni livello: Setup, Configure, Deploy, Undeploy e Shutdown. Puoi fare in modo che AWS OpsWorks Stacks esegua automaticamente una ricetta sulle istanze di un layer assegnando la ricetta all'evento del ciclo di vita appropriato.
In genere, è opportuno creare le directory non appena terminata la procedura di avvio di un'istanza, che corrisponde all'evento Setup. Di seguito viene mostrato come eseguire la ricetta di esempio al momento dell'installazione, utilizzando lo stesso stack creato in precedenza nell'esempio. Puoi utilizzare la stessa procedura per gli altri eventi.
Per eseguire automaticamente una ricetta al momento della configurazione
-
Scegli Livelli nel pannello di navigazione, quindi scegli l'icona a forma di matita accanto al link Ricette del OpsTest livello.
-
Aggiungere
opstest::default
alle ricette Setup (Installazione) del livello, fare clic su + per aggiungerlo al livello e scegliere Save (Salva) per salvare la configurazione. -
Scegliere Instances (Istanze), aggiungere un'altra istanza a un livello e avviarla.
L'istanza deve essere denominata
opstest2
. Al termine dell'avvio, AWS OpsWorks Stacks verrà eseguito.opstest::default
-
Una volta che l'istanza
opstest2
è online, verificare che/srv/www/shared
sia presente.
Nota
Se hai assegnato ricette agli eventi Setup, Configure o Deploy, puoi eseguirle anche manualmente utilizzando un comando dello stack (Setup e Configure) o un comando di distribuzione (Deploy) per attivare l'evento. Se hai più ricette assegnate a un evento, questi comandi le eseguono tutte.
Risoluzione dei problemi e correzione delle ricette
Se non ottieni i risultati previsti o le tue ricette non vengono eseguite correttamente, il processo di risoluzione dei problemi inizia generalmente con l'esame del log di Chef. Contiene una descrizione dettagliata dell'esecuzione e include eventuali messaggi di log inline delle tue ricette. I log sono particolarmente utili se la tua ricetta semplicemente non riesce. In questo caso, i log di Chef registrano l'errore, inclusa una traccia di stack.
Se la ricetta ha esito positivo, come nell'esempio, il log di Chef spesso non si rivela molto utile. In questo caso, puoi individuare il problema solo esaminando più attentamente la ricetta, in particolare le prime righe:
Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "centos" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) ...
CentOS è un'alternativa ragionevole per Amazon Linux quando testi ricette su Vagrant, tuttavia attualmente le ricette sono in esecuzione su un'istanza Amazon Linux effettiva. Il valore della piattaforma per Amazon Linux è amazon
, che non è incluso nella chiamata value_for_platform
, pertanto la ricetta crea /srv/www/config
per impostazione predefinita. Per ulteriori informazioni sulla risoluzione dei problemi, consulta Guida al debugging e alla risoluzione dei problemi.
Ora che hai identificato il problema, devi aggiornare la ricetta e verificare la correzione. Puoi tornare ai file sorgente originali, aggiornaredefault.rb
, caricare un nuovo archivio su Amazon S3 e così via. Tuttavia, tale processo può risultare lungo e noioso. Di seguito viene mostrato un approccio molto più veloce, particolarmente utile per i bug delle ricette semplici, come quella nell'esempio, che consiste nel modificare la ricetta sull'istanza.
Per modificare una ricetta su un'istanza
-
Utilizzalo SSH per accedere all'istanza e poi eseguilo
sudo su
per aumentare i tuoi privilegi. Per accedere alle directory dei libri di ricette, sono necessari privilegi root. -
AWS OpsWorks Stacks memorizza il tuo libro di cucina in
/opt/aws/opsworks/current/site-cookbooks
, quindi vai a./opt/aws/opsworks/current/site-cookbooks/opstest/recipes
Nota
AWS OpsWorks Stacks memorizza anche una copia dei tuoi libri di cucina in.
/opt/aws/opsworks/current/merged-cookbooks
Non modificare tale libro di ricette. Quando esegui la ricetta, AWS OpsWorks Stacks copia il ricettario da.../site-cookbooks
a.../merged-cookbooks
, quindi tutte le modifiche apportate verranno sovrascritte..../merged-cookbooks
-
Utilizzare un editor di testo sull'istanza per modificare
default.rb
e sostituirecentos
conamazon
. La ricetta dovrebbe essere simile alla seguente.Chef::Log.info("******Creating a data directory.******") data_dir = value_for_platform( "amazon" => { "default" => "/srv/www/shared" }, "ubuntu" => { "default" => "/srv/www/data" }, "default" => "/srv/www/config" ) ...
Per verificare la correzione, esegui la ricetta utilizzando di nuovo il comando dello stack Execute Recipe (Esegui ricetta). L'istanza deve avere una directory /srv/www/shared
. Se devi apportare ulteriori modifiche a una ricetta, puoi eseguire Execute Recipe (Esegui ricetta) in qualsiasi momento. Non è necessario arrestare e riavviare l'istanza a ogni esecuzione del comando. Una volta che la ricetta funzionerà correttamente, non dimenticare di aggiornare il codice nel libro di ricette.
Nota
Se hai assegnato la tua ricetta a un evento del ciclo di vita in modo che AWS OpsWorks Stacks la esegua automaticamente, puoi sempre utilizzare Execute Recipe per eseguire nuovamente la ricetta. Puoi anche eseguire nuovamente la ricetta tutte le volte che vuoi senza riavviare l'istanza utilizzando la console Stacks per attivare manualmente l'evento appropriato. AWS OpsWorks Tuttavia, questo approccio esegue tutte le ricette dell'evento. Ecco un promemoria:
-
Utilizza un comando dello stack per attivare gli eventi Setup o Configure.
-
Utilizza un comando di distribuzione per attivare gli eventi Deploy o Undeploy.