Creazione di pacchetti di dipendenze di libri di ricette a livello locale - 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à.

Creazione di pacchetti di dipendenze di libri di ricette a livello locale

Importante

AWS OpsWorks Stacksnon accetta più nuovi clienti. I clienti esistenti potranno utilizzare la OpsWorks console, l'API, l'interfaccia a riga di comando e CloudFormation le risorse normalmente fino al 26 maggio 2024, momento in cui non saranno più disponibili. Per prepararti a questa transizione, ti consigliamo di trasferire i tuoi stack AWS Systems Manager il prima possibile. Per ulteriori informazioni, consultare AWS OpsWorks StacksDomande frequenti sulla fine del ciclo di vita e Migrazione AWS OpsWorks Stacks delle applicazioni su AWS Systems Manager Application Manager.

Puoi usare Berkshelf per impacchettare localmente le dipendenze dei tuoi libri di cucina, caricare il pacchetto su Amazon S3 e modificare lo stack per utilizzare il pacchetto su Amazon S3 come fonte per libri di cucina. 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?.

Le seguenti procedure guidate illustrano come creare pacchetti di libri di ricette e delle relative dipendenze in un file .zip e quindi utilizzare tale file come origine del libro di ricette per le istanze Linux in AWS OpsWorks Stacks. La prima procedura guidata descrive come creare un pacchetto di un libro di ricette. La seconda procedura guidata descrive invece come creare un pacchetto di più libri di ricette.

Prima di iniziare, installa il kit di sviluppo Chef (noto anche come Chef DK), ovvero una serie di strumenti sviluppati dalla community di Chef. Devi avere a disposizione questo strumento per poter utilizzare lo strumento a riga di comando chef.

Creazione di pacchetti di dipendenze a livello locale in Chef 12

In Chef 12 Linux, Berkshelf non è più installato per impostazione predefinita nelle istanze dello stack. Consigliamo di installare e usare Berkshelf su un computer di sviluppo locale per creare localmente il pacchetto delle dipendenze del libro di ricette. Carica il bundle di origine su Amazon S3. Modifica infine lo stack di Chef 12 Linux per utilizzare il pacchetto caricato come origine del libro di ricette. Tieni presente le seguenti differenze quando crei pacchetti di libri di ricette in Chef 12.

  1. Nel computer locale, creare un libro di ricette eseguendo lo strumento a riga di comando chef.

    chef generate cookbook "server-app"

    Questo comando crea un libro di ricette, un Berksfile, un file metadata.rb e una directory di ricette e li posiziona in una cartella con lo stesso nome del libro di ricette. L'esempio seguente mostra la struttura degli elementi creati.

    server-app <-- the cookbook you've just created └── Berksfile ├── metadata.rb └── recipes
  2. In un editor di testo, modificare il Berksfile in modo che punti ai libri di ricette da cui dipenderà il libro di ricette server-app. In questo esempio, si desidera che server-app dipenda dal libro di ricette java disponibile nel supermercato Chef. In questo caso viene specificata la versione 1.50.0 o una versione anteriore più aggiornata, ma è possibile immettere qualsiasi versione pubblicata tra virgolette singole. Salvare le modifiche e chiudere il file.

    source 'https://supermarket.chef.io' cookbook 'java', '~> 1.50.0'
  3. Modificare il file metadata.rb e aggiungere le dipendenze. Salvare le modifiche e chiudere il file.

    depends 'java' , '~> 1.50.0'
  4. Passare alla directory server-app del libro di ricette creata automaticamente da Chef, quindi eseguire il comando package per creare un file tar del libro di ricette. Se si sta creato un pacchetto di più libri di ricette, eseguire questo comando nella directory principale in cui vengono archiviati tutti i libri di ricette. Per creare un pacchetto di un singolo libro di ricette, eseguire il comando nella directory del libro di ricette desiderato. In questo esempio, il comando viene eseguito nella directory server-app.

    berks package cookbooks.tar.gz

    L'output è simile a quello riportato di seguito. Il file tar.gz viene creato nella directory locale.

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  5. NelAWS CLI, carica il pacchetto che hai appena creato su Amazon S3. Annotare il nuovo URL del pacchetto del libro di ricette dopo averlo caricato in S3. Questo URL sarà necessario per le impostazioni dello stack.

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    L'output è simile a quello riportato di seguito.

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  6. In AWS OpsWorks Stacks, modificare lo stack in modo che utilizzi il pacchetto caricato come origine del libro di ricette.

    1. Impostare l'opzione Use custom Chef Cookbooks (Utilizza i libri di ricette di Chef personalizzati) su Yes (Sì).

    2. Impostare Repository type (Tipo di repository) su S3 Archive (Archivio S3).

    3. In Repository URL (URL repository), incollare l'URL del pacchetto del libro di ricette caricato nella fase 5.

    Salva le modifiche apportate allo stack.

Creazione di pacchetti di dipendenze a livello locale per un libro di ricette

  1. Nel computer locale, creare un libro di ricette utilizzando lo strumento a riga di comando chef:

    chef generate cookbook "server-app"

    Questo comando crea un libro di ricette e un Berksfile e li posiziona in una cartella con lo stesso nome del libro di ricette.

  2. Passare alla directory del libro di ricette creata automaticamente da Chef, quindi creare un pacchetto di tutti gli elementi eseguendo il seguente comando:

    berks package cookbooks.tar.gz

    L'output sarà il seguente:

    Cookbook(s) packaged to /Users/username/tmp/berks/cookbooks.tar.gz
  3. NelAWS CLI, carica il pacchetto che hai appena creato su Amazon S3:

    aws s3 cp cookbooks.tar.gz s3://bucket-name/

    L'output sarà il seguente:

    upload: ./cookbooks.tar.gz to s3://bucket-name/cookbooks.tar.gz
  4. In AWS OpsWorks Stacks, modificare lo stack in modo che utilizzi il pacchetto caricato come origine del libro di ricette.

Creazione di pacchetti di dipendenze a livello locale per più libri di ricette

Questo esempio crea due libri di ricette e crea un pacchetto delle relative dipendenze.

  1. Nel computer locale, eseguire i seguenti comandi chef per generare due libri di ricette:

    chef generate cookbook "server-app" chef generate cookbook "server-utils"

    In questo esempio, il libro di ricette server-app esegue le configurazioni Java. Pertanto è necessario aggiungere una dipendenza da Java.

  2. Modificare server-app/metadata.rb aggiungendo una dipendenza al libro di ricette Java della community:

    maintainer "The Authors" maintainer_email "you@example.com" license "all_rights" description "Installs/Configures server-app" long_description "Installs/Configures server-app" version "0.1.0" depends "java"
  3. Indicare al Berkshelf gli elementi da inserire nei pacchetti modificando il file Berksfile nella directory principale del libro di ricette come segue:

    source "https://supermarket.chef.io" cookbook "server-app", path: "./server-app" cookbook "server-utils", path: "./server-utils"

    La struttura di file ora appare nel seguente modo:

    .. └── Berksfile ├── server-app └── server-utils
  4. Infine, crea un pacchetto zip, caricalo su Amazon S3 e modifica lo stack di AWS OpsWorks Stacks per utilizzare la nuova fonte del libro di cucina. A tale scopo, eseguire le fasi da 2 a 4 descritte nell'argomento Creazione di pacchetti di dipendenze a livello locale per un libro di ricette.

Risorse aggiuntive

Per ulteriori informazioni sulla creazione di pacchetti di dipendenze dei libri di ricette, consulta le seguenti sezioni.