Fase 2.3: implementare un libro di ricette personalizzato - 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à.

Fase 2.3: implementare un libro di ricette personalizzato

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 o tramite Premium AWS Support.

Anche se uno stack è fondamentalmente un contenitore di istanze, non aggiungere istanze direttamente a uno stack. Puoi aggiungere uno o più livelli, ciascuno dei quali rappresenta un gruppo di istanze correlate, quindi aggiungi le istanze ai livelli.

Un layer è fondamentalmente un modello che AWS OpsWorks Stacks utilizza per creare un set di istanze Amazon EC2 con la stessa configurazione. Un'istanza viene avviata con una versione base del sistema operativo, e il livello dell'istanza esegue un'ampia gamma di attività sull'istanza per implementare tale piano, il quale può includere:

  • Creazione di directory e file

  • Gestione degli utenti

  • Installazione e configurazione del software

  • Avvio o arresto di server

  • Distribuzione del codice applicazione e dei file correlati.

Un layer esegue attività sulle istanze eseguendo ricette Chef, in breve ricette. Una ricetta è un'applicazione di Ruby che utilizza il linguaggio specifico di dominio (DSL) di Chef, per descrivere lo stato finale dell'istanza. Con AWS OpsWorks Stacks, ogni ricetta viene solitamente assegnata a uno degli eventi del ciclo di vita del layer: Setup, Configuration, Deploy, Undeploy e Shutdown. Quando si verifica un evento del ciclo di vita su un'istanza, AWS OpsWorks Stacks esegue le ricette dell'evento per eseguire le attività appropriate. Ad esempio, l'evento Setup si verifica al termine dell'avvio di un'istanza. AWS OpsWorks Stacks esegue quindi le ricette di installazione, che in genere eseguono attività come l'installazione e la configurazione del software del server e l'avvio dei servizi correlati.

AWS OpsWorks Stacks fornisce a ogni livello una serie di ricette integrate che eseguono attività standard. È quindi possibile estendere una funzionalità del livello per l'implementazione di ricette personalizzate, per eseguire attività aggiuntive e per la loro assegnazione agli eventi del ciclo di vita del livello. Gli stack di Windows supportano livelli personalizzati, i quali dispongono di una serie di ricette che eseguono solo alcune attività di base. Per aggiungere funzionalità alle istanze di Windows, è necessario implementare ricette personalizzate per installare software, distribuire applicazioni e così via. Questo argomento descrive come creare un semplice livello personalizzato per supportare istanze IIS.

Rapida introduzione ai libri di cucina e alle ricette

Una ricetta definisce uno o più aspetti dello stato previsto dell'istanza: di quali directory deve disporre, quali pacchetti software devono essere installati, quali applicazioni devono essere distribuite e così via. Le ricette sono contenute in un libro di ricette, che in genere contiene uno o più ricette correlate, oltre a file associati, ad esempio i modelli per la creazione di file di configurazione.

Questo argomento è un'introduzione molto semplice alle ricette, appena sufficiente per mostrare come implementare un libro di ricette per supportare un semplice livello IIS personalizzato. Per un'introduzione più generale dei libri di ricette, consulta Libri di ricette e ricette. Per un'introduzione tutorial dettagliata relativa all'implementazione di libri di ricette, tra cui alcuni argomenti specifici di Windows, consulta Introduzione ai libri di ricette.

Le ricette di Chef sono tecnicamente applicazioni di Ruby, ma la maggior parte del codice, se non tutto è nel DSL di Chef. Il DSL è composto essenzialmente da una serie di risorse, che è possibile utilizzare per specificare in modo dichiarativo un aspetto dello stato delle istanze. Ad esempio, una directory risorsa definisce una directory per essere aggiunta al sistema. L'esempio seguente definisce una C:\data directory con i diritti di controllo completi, la quale appartiene all'utente specificato e non eredita i diritti dalla directory padre.

directory 'C:\data' do rights :full_control, 'WORKGROUP\username' inherits false action :create end

Quando Chef esegue una ricetta, esegue ogni risorsa passando i dati a un fornitore associato, un oggetto di Ruby che gestisce i dettagli di modifica dello stato dell'istanza. In casi come questo, il fornitore crea una nuova directory con la configurazione specificata.

Il libro di ricette personalizzato per il livello IIS personalizzato deve eseguire le seguenti attività:

  • Installare la caratteristica IIS e avviare il servizio.

    Generalmente si esegue questa operazione durante l'installazione, subito dopo il completamento dell'avvio da parte dell'istanza.

  • Distribuire un'applicazione per l'istanza, una semplice pagina HTML per questo esempio.

    Generalmente si esegue questa operazione durante l'installazione. Tuttavia, di solito le applicazioni devono essere aggiornati regolarmente, perciò è necessario distribuire gli aggiornamenti quando l'istanza è online.

È possibile disporre di una sola ricetta per eseguire tutte queste attività. Tuttavia, l'approccio consigliato è disporre di ricette separate per l'installazione e le attività di distribuzione. In questo modo, puoi distribuire gli aggiornamenti delle app in qualsiasi momento, senza eseguire anche il codice d'installazione. I seguenti descrivono come configurare un libro di ricette per supportare un livello IIS personalizzato. Gli argomenti di seguito mostreranno come implementare le ricette.

Per iniziare
  1. Crea una directory chiamata iis-cookbook nella posizione che ti è più comoda sulla workstation.

  2. Aggiungi un file metadata.rb con il contenuto seguente su iis-cookbook.

    name "iis-cookbook" version "0.1.0"

    In questo esempio viene utilizzato un metadata.rb minimo. Per ulteriori informazioni su come utilizzare questo file, consulta metadata.rb.

  3. Aggiungi una directory recipes su iis-cookbook.

    Questa directory, che deve essere chiamata recipes, contiene le ricette del libro di ricette.

In generale, i libri di ricette possono contenere tante altre directory. Ad esempio, se una ricetta utilizza un modello per creare un file di configurazione, il modello di solito va nella directory templates\default. Il libro di ricette di questo esempio, è costituito interamente da ricette, perciò non sono necessarie altre directory. Inoltre, questo esempio utilizza un singolo libro di ricette, ma puoi usarne quanti te ne servono; per progetti complessi sono preferibili più libri di cucina. Ad esempio, è possibile disporre di libri di ricette separati per l'installazione e le attività di distribuzione. Per ulteriori esempi di libri di ricette, consulta Libri di ricette e ricette.

Implementare una ricetta per installare e avviare IIS

IIS è una caratteristica di Windows, uno dei vari componenti di sistema opzionale che è possibile installare su Windows Server. Puoi far sì che una ricetta installi IIS in uno dei seguenti modi:

Nota

powershell_script è una delle risorse più utili delle ricette di Windows. È possibile utilizzarlo per eseguire diverse attività su un'istanza eseguendo uno PowerShell script o un cmdlet. È utile soprattutto per le attività che non sono supportate da una risorsa di Chef.

Questo esempio esegue uno PowerShell script per installare e avviare Web Server (IIS). Il libro di ricette di windows verrà descritto più avanti. Per un esempio su come utilizzare windows_feature per installare IIS, consulta Installazione di una funzionalità di Windows: IIS.

Aggiungi una ricetta chiamata install.rb sulla directory recipes del libro di ricette, con il seguente contenuto.

powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end

La ricetta contiene due risorse.

powershell_script

powershell_scriptesegue lo PowerShell script o il cmdlet specificato. L'esempio dispone delle seguenti impostazioni dell'attributo:

  • code— I PowerShell cmdlet da eseguire.

    In questo esempio viene eseguito un cmdlet Install-WindowsFeature che installa il server Web (IIS). In generale, l'attributo code può avere un numero qualsiasi di linee, così da consentirti di eseguire tutti i cmdlet di cui hai bisogno.

  • not-if— Un attributo guard che garantisce che la ricetta installi IIS solo se non è ancora stato installato.

    In genere è opportuno che le ricette siano idempotenti, in modo da non perdere tempo per eseguire la stessa attività più di una volta.

Ogni risorsa dispone di un'operazione che specifica l'operazione intrapresa dal fornitore. Non esiste alcuna azione esplicita per questo esempio, quindi il provider esegue l':runazione predefinita, che esegue lo script specificato PowerShell . Per ulteriori informazioni, consulta Esecuzione di uno PowerShell script di Windows.

service

Un service gestisce un servizio, il servizio server Web IIS (W3SVC) in questo caso. L'esempio utilizza gli attributi di default e specifica due azioni, :start e :enable, che avviano e attivano IIS.

Nota

Se desideri installare il software che utilizza il programma di installazione del pacchetto, come MSI, puoi utilizzare una risorsa windows_package. Per ulteriori informazioni, consulta Installazione di un pacchetto.

Abilita il libro di ricette personalizzato

AWS OpsWorks Stacks esegue le ricette da una cache locale su ogni istanza. Per eseguire le tue ricette personalizzate, è necessario:

  • Archiviare il libro di ricette in un repository remoto.

    AWS OpsWorks Stacks scarica i libri di cucina da questo repository nella cache locale di ogni istanza.

  • Modificare lo stack per abilitare i libri di ricette personalizzati.

    I libri di ricette personalizzati sono disabilitati per impostazione predefinita; per questo è necessario abilitarli per lo stack e fornire l'URL dell'archivio e delle informazioni correlate.

AWS OpsWorks Stacks supporta archivi S3 e repository Git per libri di cucina personalizzati; questo esempio utilizza un archivio S3. Per ulteriori informazioni, consulta Repository dei libri di ricette.

Per utilizzare un archivio S3
  1. Creare un archivio .zip della directory iis-cookbook.

    AWS OpsWorks Stacks supporta anche archivi .tgz (gzip compressi tar) per gli stack di Windows.

  2. Carica l'archivio in un bucket S3 nella regione Stati Uniti occidentali (California settentrionale) e rendi il file pubblico. Puoi anche utilizzare un archivio S3 privato, ma un archivio pubblico è sufficiente in questo esempio, ed è anche molto più facile da utilizzare.

    1. Accedi AWS Management Console e apri la console Amazon S3 all'indirizzo https://console.aws.amazon.com/s3/.

    2. Se non hai ancora un bucketus-west-1, scegli Crea un bucket e crea un bucket nella regione Stati Uniti occidentali (California settentrionale).

    3. Nell'elenco dei bucket, scegli il nome del bucket sul quale desideri caricare il file, quindi fai clic su Upload (Carica).

    4. Seleziona Aggiungi file.

    5. Selezionare l'archivio di file da caricare, quindi scegliere Apri.

    6. Nella parte inferiore della finestra di dialogo Upload - Select Files and Folders (Carica - Seleziona file e cartelle), scegli Set Details (Imposta dettagli).

    7. Nella parte inferiore della finestra di dialogo Set Details (Imposta dettagli), scegli Set Permissions (Imposta autorizzazioni).

    8. Nella finestra di dialogo Set Permissions (Imposta autorizzazioni), scegli Make everything public (Rendi tutto pubblico).

    9. Nella parte inferiore della finestra di dialogo Set Permissions (Imposta autorizzazioni), scegli Start Upload (Avvia caricamento). Al termine del caricamento, il file iis-cookbook.zip viene visualizzato nel bucket.

    10. Scegli il bucket e quindi scegli la scheda Proprietà per il bucket. Accanto al Link (Collegamento), registra l'archivio URL del file da utilizzare in seguito.

    Per ulteriori informazioni sul caricamento di file in un bucket Amazon S3, consulta Come si caricano file e cartelle in un bucket S3? nella Guida per l'utente della console Amazon S3.

Importante

Fino a questo punto, la procedura guidata ti è costata solo un po' di tempo; lo stesso servizio AWS OpsWorks Stacks è gratuito. Tuttavia, devi pagare per tutte le risorse AWS che utilizzi, come lo storage Amazon S3. Ti verranno addebitati costi solo al caricamento dell'archivio. Per ulteriori informazioni, consulta Prezzi di AWS.

Per abilitare libri di ricette personalizzati per lo stack
  1. Nella console AWS OpsWorks Stacks, scegli Stack nel pannello di navigazione, quindi scegli Stack Settings in alto a destra.

  2. Sulla pagina Settings (Impostazioni), scegli Edit (Modifica) in alto a destra.

  3. Sulla pagina Settings (Impostazioni), imposta Use custom Chef cookbooks (Utilizza libri di ricette personalizzati di Chef) su Yes (Sì), quindi inserisci le informazioni seguenti:

    • Tipo di repository: S3 Archive.

    • URL del repository: l'URL S3 del file di archivio del libro di cucina che hai registrato in precedenza.

  4. Scegli Save (Salva) per aggiornare la configurazione dello stack.

AWS OpsWorks Stacks installa il tuo ricettario personalizzato su tutte le nuove istanze. Nota che AWS OpsWorks Stacks non installa automaticamente né aggiorna i libri di ricette personalizzati sulle istanze online. Come descritto in seguito, puoi farlo manualmente.