

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à.

# Versione di Chef
<a name="workingcookbook-chef11"></a>

**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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

OpsWorks Stacks supporta più versioni di Chef. La versione viene selezionata quando si [crea lo stack](workingstacks-creating.md). OpsWorks Stacks installa quindi quella versione di Chef su tutte le istanze dello stack insieme a una serie di ricette integrate compatibili con quella versione. Se installi ricette personalizzate, devono essere compatibile con la versione di Chef dello stack.

OpsWorks Stacks attualmente supporta le versioni Chef 12, 11.10, 11.4 e 0.9 per gli stack Linux e Chef 12.2 (attualmente Chef 12.22) per gli stack Windows. Per comodità, agli stack viene in genere fatto riferimento mediante i rispettivi numeri di versione principale e secondaria. Per gli stack Linux, puoi utilizzare la funzionalità Configuration Manager (Gestore configurazione) per specificare la versione di Chef da utilizzare quando [crei uno stack](workingstacks-creating.md). Gli stack di Windows devono utilizzare Chef 12.2. Per ulteriori informazioni, incluse le linee guida per la migrazione degli stack in versioni più recenti di Chef, consulta [Versione di Chef](#workingcookbook-chef11). Per tutte le informazioni sulle versioni, consulta [OpsWorks Sistemi operativi impilati](workinginstances-os.md).

**Chef 12.2**  
Il supporto per Chef 12.2 è stato introdotto a maggio 2015 e viene utilizzato solo dagli stack di Windows. La versione corrente di Chef per gli stack Windows è Chef 12.22. Viene eseguito con Chef 2.3.6 e utilizza [chef-client nella modalità locale](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), che consente di avviare un server Chef in-memory locale chiamato [chef-zero](https://docs.chef.io/ctl_chef_client.html#about-chef-zero). La presenza di questo server permette alle ricette di utilizzare i contenitori di dati e la ricerca di Chef. Il supporto è caratterizzato da alcune limitazioni, che vengono descritte in [Implementazione delle ricette: Chef 12.2](workingcookbook-chef12.md), ma puoi eseguire numerosi libri di ricette della community senza alcuna modifica.

**Chef 12**  
Il supporto di Chef 12 è stato introdotto nel dicembre 2015 e viene utilizzato solo dagli stack Linux. Viene eseguito con Ruby 2.1.6 o 2.2.3 e usa [chef-client in modalità locale](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), che consente alle ricette di utilizzare i contenitori di dati e la ricerca di Chef. Per ulteriori informazioni, consulta [OpsWorks Sistemi operativi impilati](workinginstances-os.md).

**Chef 11.10**  
Il supporto di Chef 11.10 è stato introdotto nel marzo 2014 e viene utilizzato solo dagli stack Linux. Viene eseguito con Ruby 2.0.0 e usa [chef-client in modalità locale](https://docs.chef.io/ctl_chef_client.html#run-in-local-mode), che consente alle ricette di utilizzare i contenitori di dati e la ricerca di Chef. Il supporto è caratterizzato da alcune limitazioni, che vengono descritte in [Implementazione delle ricette: Chef 11.10](workingcookbook-chef11-10.md), ma puoi eseguire numerosi libri di ricette della community senza alcuna modifica. Per gestire le dipendenze dei libri di ricette, puoi utilizzare anche [Berkshelf](http://berkshelf.com/). Le versioni di Berkshelf supportate dipendono dal sistema operativo. Per ulteriori informazioni, consulta [OpsWorks Sistemi operativi impilati](workinginstances-os.md). Non puoi creare stack CentOS che utilizzano Chef 11.10.

**Chef 11.4**  
Il supporto di Chef 11.4 è stato introdotto nel luglio 2013 e viene utilizzato solo dagli stack Linux. Viene eseguito con Ruby 1.8.7 e usa [chef-solo](https://docs.chef.io/chef_solo.html), che non supporta i contenitori di dati e la ricerca di Chef. Spesso puoi usare libri di cucina della community che dipendono da tali funzionalità con OpsWorks Stacks, ma devi modificarli come descritto in. [Migrazione in una nuova versione di Chef](workingcookbook-chef11-migrate.md) Non puoi creare stack CentOS che utilizzano Chef 11.4. Gli stack Chef 11.4 non sono supportati negli endpoint regionali al di fuori della regione Stati Uniti orientali (Virginia settentrionale).

**Chef 0.9**  
 Chef 0.9 viene utilizzato solo dagli stack Linux e non è più supportato. Si noti quanto segue:   
+ Non puoi utilizzare la console per creare un nuovo stack Chef 0.9.

  Devi utilizzare la CLI o l'API oppure devi creare uno stack con una versione diversa di Chef e quindi modificare la configurazione dello stack.
+ Le nuove funzionalità OpsWorks Stacks non sono disponibili per gli stack Chef 0.9.
+ Le nuove versioni dei sistemi operativi forniranno solo un supporto limitato per gli stack Chef 0.9.

  In particolare, Amazon Linux 2014.09 e versioni successive non supportano gli stack Chef 0.9 con livelli Rails App Server che dipendono da Ruby 1.8.7.
+ Le nuove regioni AWS, inclusa l'Europa (Francoforte), non supportano gli stack Chef 0.9.
Non consigliamo di utilizzare Chef 0.9 per i nuovi stack. È consigliabile eseguire la migrazione degli stack esistenti alla versione più aggiornata di Chef il prima possibile.

Se desideri utilizzare libri di cucina della community con OpsWorks Stacks, [ti consigliamo di specificare Chef 12](workingstacks-creating.md) per i nuovi stack Linux e di migrare gli stack Linux esistenti su Chef 12. Puoi utilizzare la console, l'API o la CLI di OpsWorks Stacks per migrare gli stack esistenti a una versione più recente di Chef. Per ulteriori informazioni, consulta [Migrazione in una nuova versione di Chef](workingcookbook-chef11-migrate.md).

**Topics**
+ [Implementazione di ricette per Chef 12.2 Stacks](workingcookbook-chef12.md)
+ [Implementazione delle ricette per gli stack Chef 12](workingcookbook-chef12-linux.md)
+ [Implementazione delle ricette per gli stack Chef 11.10](workingcookbook-chef11-10.md)
+ [Implementazione delle ricette per gli stack Chef 11.4](workingcookbook-chef11-4.md)
+ [Migrazione di un stack Linux esistente in una nuova versione di Chef](workingcookbook-chef11-migrate.md)

# Implementazione di ricette per Chef 12.2 Stacks
<a name="workingcookbook-chef12"></a>

**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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Chef 12.2 (attualmente Chef 12.22) è disponibile solo per gli stack Windows, che devono eseguire tale versione di Chef.
+ In alcuni casi le ricette devono utilizzare gli attributi e le risorse specifici di Windows.

  Per ulteriori informazioni, consulta l'argomento relativo a [Chef per Microsoft Windows](https://docs.chef.io/windows.html).
+ Le esecuzioni di Chef utilizzano Ruby 2.3.6. Pertanto, le ricette possono utilizzare la nuova sintassi Ruby.
+ Le ricette possono utilizzare i contenitori di dati e la ricerca di Chef.

  Chef 12.2 stacks può utilizzare molti libri di cucina della community senza modifiche. Per ulteriori informazioni, consultare [Utilizzo della ricerca di Chef](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search) e [Utilizzo di contenitori di dati](workingcookbook-chef11-10.md#workingcookbook-chef11-10-databag).
+ La maggior parte degli attributi di configurazione e distribuzione degli stack descritti in [OpsWorks Riferimento a Stacks Data Bag](data-bags.md) e [Attributi dei libri di ricette predefiniti](attributes-recipes.md) è disponibile per le ricette Windows.

  Puoi utilizzare la ricerca di Chef per recuperare tali valori degli attributi. Per vedere un esempio, consulta [Ottenimento dei valori degli attributi con la ricerca di Chef](cookbooks-101-opsworks-opsworks-stack-config-search.md). Per un elenco degli attributi, consulta [OpsWorks Riferimento a Stacks Data Bag](data-bags.md).

# Implementazione delle ricette per gli stack Chef 12
<a name="workingcookbook-chef12-linux"></a>

**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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Gli stack Chef 12 offrono i seguenti vantaggi rispetto agli stack Chef 11.10:
+ Le esecuzioni di Chef utilizzano Ruby 2.1.6. Pertanto, le ricette possono utilizzare la nuova sintassi Ruby.
+ Gli stack Chef 12 possono utilizzare un numero maggiore di libri di ricette della community, senza alcuna modifica. Senza i libri di ricette predefiniti, non si verificheranno più conflitti a livello di nomi tra i libri di ricette predefiniti e quelli personalizzati. 
+ Non sei più limitato alle versioni di Berkshelf per le quali OpsWorks Stacks ha fornito pacchetti predefiniti. Berkshelf non è più installato sulle OpsWorks istanze Stacks in Chef 12. Puoi invece utilizzare qualsiasi versione di Berkshelf sulla workstation locale. 
+ Ora esiste una netta separazione tra i libri di cucina integrati forniti da OpsWorks Stacks con Chef 12 (Elastic Load Balancing, Amazon RDS e Amazon ECS) e i libri di cucina personalizzati. Ciò semplifica la risoluzione dei problemi relativi alle esecuzioni di Chef non riuscite.

# Implementazione delle ricette per gli stack Chef 11.10
<a name="workingcookbook-chef11-10"></a>

**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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Gli stack Chef 11.10 offrono i seguenti vantaggi rispetto agli stack Chef 11.4:
+ Le esecuzioni di Chef utilizzano Ruby 2.0.0. Pertanto, le ricette possono utilizzare la nuova sintassi Ruby.
+ Le ricette possono utilizzare i contenitori di dati e la ricerca di Chef.

  Gli stack Chef 11.10 possono utilizzare numerosi libri di ricette della community, senza alcuna modifica.
+ Puoi utilizzare Berkshelf per la gestione dei libri di ricette.

  Berkshelf offre maggiore flessibilità per quanto riguarda la gestione dei libri di ricette personalizzati e l'utilizzo dei libri di ricette della community in uno stack.
+ I libri di ricette devono dichiarare le dipendenze `metadata.rb`.

  Se il tuo libro di ricette dipende da un altro libro di ricette, devi includere tale dipendenza nel file `metadata.rb` del tuo libro di ricette. Ad esempio, se il tuo libro di ricette include una ricetta con un'istruzione come `include_recipe anothercookbook::somerecipe`, il file `metadata.rb` del libro di ricette include la riga seguente: `depends "anothercookbook"`.
+ OpsWorks Stacks installa un client MySQL sulle istanze di uno stack solo se lo stack include un livello MySQL.
+ OpsWorks Stacks installa un client Ganglia sulle istanze di uno stack solo se lo stack include un livello Ganglia.
+ Se una distribuzione esegue `bundle install` e l'installazione ha esito negativo, anche la distribuzione avrà esito negativo.

**Importante**  
Non riutilizzare i nomi di libri di ricette predefiniti per i libri di ricette personalizzati e per quelli della community. I libri di ricette personalizzati con lo stesso nome dei libri di ricette predefiniti potrebbero avere esito negativo. [Per un elenco completo dei libri di cucina integrati disponibili con gli stack Chef 11.10, 11.4 e 0.9, consulta il repository opsworks-cookbooks su. GitHub](https://github.com/aws/opsworks-cookbooks)  
I libri di ricette con caratteri non ASCII eseguiti correttamente sugli stack Chef 0.9 e 11.4 potrebbero avere esito negativo su uno stack Chef 11.10. Il motivo è che gli stack Chef 11.10 usano Ruby 2.0.0 per l'esecuzione di Chef, che prevede una codifica molto più rigida rispetto a Ruby 1.8.7. Per garantire che tali libri di ricette vengano eseguiti correttamente sugli stack Chef 11.10, ogni file che usa caratteri non ASCII deve avere un commento nella parte superiore che fornisce un suggerimento sulla codifica. Ad esempio, per la codifica UTF-8, il commento potrebbe essere `# encoding: UTF-8`. Per ulteriori informazioni sulla codifica di Ruby 2.0.0, consulta l'argomento relativo alla [codifica di Ruby 2.0.0](http://www.ruby-doc.org/core-2.0.0/Encoding.html).

**Topics**
+ [Installazione e precedenza dei libri di ricette](#workingcookbook-chef11-10-override)
+ [Utilizzo della ricerca di Chef](#workingcookbook-chef11-10-search)
+ [Utilizzo di contenitori di dati](#workingcookbook-chef11-10-databag)
+ [Utilizzo di Berkshelf](#workingcookbook-chef11-10-berkshelf)

## Installazione e precedenza dei libri di ricette
<a name="workingcookbook-chef11-10-override"></a>

La procedura per installare i libri di cucina OpsWorks Stacks funziona in modo leggermente diverso per gli stack di Chef 11.10 rispetto alle versioni precedenti di Chef. Per gli stack Chef 11.10, dopo che OpsWorks Stacks ha installato i ricettari integrati, personalizzati e Berkshelf, li unisce in una directory comune nell'ordine seguente:

1. Libri di ricette predefiniti.

1. Libri di ricette di Berkshelf, se presenti.

1. Libri di ricette personalizzati, se presenti. 

Quando OpsWorks Stacks esegue questa unione, copia l'intero contenuto delle directory, comprese le ricette. Se sono presenti duplicati, vengono applicate le regole seguenti:
+ I contenuti dei libri di ricette di Berkshelf hanno la precedenza sui libri di ricette predefiniti.
+ I contenuti dei libri di ricette personalizzati hanno la precedenza sui libri di ricette di Berkshelf.

Per illustrare il funzionamento di questo processo, prendiamo in considerazione il seguente scenario, dove le tre directory di libri di ricette includono tutte un libro di ricette denominato `mycookbook`:
+ Libri di cucina integrati: `mycookbook` include un file di attributi denominato`someattributes.rb`, un file modello denominato e una ricetta `sometemplate.erb` denominata. `somerecipe.rb`
+ Libri di cucina Berkshelf: include e. `mycookbook` `sometemplate.erb` `somerecipe.rb`
+ Libri di cucina personalizzati: include. `mycookbook` `somerecipe.rb`

Il libro di ricette unito contiene i seguenti elementi:
+ `someattributes.rb` dal libro di ricette predefinito.
+ `sometemplate.erb` dal libro di ricette di Berkshelf.
+ `somerecipe.rb` dal libro di ricette personalizzato.

**Importante**  
Non devi personalizzare lo stack Chef 11.10 mediante la copia dell'intero libro di ricette predefinito nel tuo archivio e quindi mediante la modifica di alcune sue parti. In questo modo, sostituisci l'intero libro di ricette predefinito, comprese le ricette. Se OpsWorks Stacks aggiorna quel ricettario, il tuo stack non trarrà vantaggio da tali aggiornamenti a meno che non aggiorni manualmente la tua copia privata. Per ulteriori informazioni su come personalizzare gli stack, consulta [Personalizzazione degli stack OpsWorks](customizing.md).

## Utilizzo della ricerca di Chef
<a name="workingcookbook-chef11-10-search"></a>

Puoi utilizzare il [metodo `search`](http://docs.chef.io/dsl_recipe.html#search) di Chef nelle ricette per eseguire query sui dati dello stack. Usi la stessa sintassi del server Chef, ma OpsWorks Stacks ottiene i dati dall'oggetto nodo locale invece di interrogare un server Chef. Questi dati includono:
+ Gli [attributi di configurazione e distribuzione dello stack](workingstacks-json.md) dell'istanza.
+ Gli attributi ricavati dai file di attributi dei libri di ricette predefiniti e personalizzati dell'istanza.
+ Dati di sistema raccolti da Ohai.

Gli attributi di configurazione e distribuzione dello stack contengono la maggior parte delle informazioni che le ricette in genere ottengono tramite la ricerca, inclusi dati come nomi host e indirizzi IP per ogni istanza online dello stack. OpsWorks Stacks aggiorna questi attributi per ogni [evento del ciclo](workingcookbook-events.md) di vita, garantendo che riflettano accuratamente lo stato attuale dello stack. Ciò significa che spesso nello stack puoi utilizzare le ricette della community che dipendono dalla funzionalità di ricerca, senza alcuna modifica. Il metodo di ricerca restituisce i dati appropriati, derivati dagli attributi di configurazione e distribuzione dello stack, anziché da un server.

La limitazione principale di OpsWorks Stacks search è che gestisce solo i dati nell'oggetto del nodo locale, in particolare la configurazione dello stack e gli attributi di distribuzione. Per questo motivo, i seguenti tipi di dati potrebbero non essere disponibili tramite la ricerca:
+ Attributi definiti localmente su altre istanze.

  Se una ricetta definisce un attributo localmente, tali informazioni non vengono riportate al servizio OpsWorks Stacks, quindi non è possibile accedere a tali dati da altre istanze utilizzando la ricerca.
+ Attributi `deploy` personalizzati

  Puoi specificare dati JSON personalizzati quando [distribuisci un'app](workingapps-deploying.md); gli attributi corrispondenti vengono installati nelle istanze dello stack per tale distribuzione. Tuttavia, se esegui la distribuzione solo sulle istanze selezionate, gli attributi vengono installati solo su tali istanze. Le query relative agli attributi JSON personalizzati avranno esito negativo su tutte le altre istanze. Inoltre, gli attributi personalizzati vengono inclusi nei dati JSON di configurazione e distribuzione dello stack solo per la distribuzione specifica. Tali dati sono accessibili solo finché il successivo evento del ciclo di vita non installa un nuovo set di attributi di configurazione e distribuzione dello stack. Si noti che se [specifichi dati JSON personalizzati per lo stack](workingstacks-json.md), gli attributi vengono installati su ogni istanza per ogni evento del ciclo di vita, risultando così sempre accessibili tramite la ricerca.
+ Dati Ohai da altre istanze.

  Lo [strumento Ohai](http://docs.chef.io/resource_ohai.html) di Chef recupera una serie di dati di sistema su un'istanza e aggiunge tali dati all'oggetto nodo. Questi dati vengono archiviati in locale e non vengono restituiti al servizio OpsWorks Stacks. Pertanto, la ricerca non è in grado di accedere ai dati Ohai da altre istanze. Tuttavia, alcuni di questi dati potrebbero essere inclusi negli attributi di configurazione e distribuzione dello stack.
+ Istanze offline.

  Gli attributi di configurazione e distribuzione dello stack contengono i dati solo per le istanze online.

Il seguente segmento di ricetta mostra come recuperare l'indirizzo IP privato di un'istanza del livello PHP mediante la ricerca. 

```
appserver = search(:node, "role:php-app").first
Chef::Log.info("The private IP is '#{appserver[:private_ip]}'")
```

**Nota**  
Quando OpsWorks Stacks aggiunge gli attributi di configurazione e distribuzione dello stack all'oggetto nodo, crea effettivamente due set di attributi di livello, ciascuno con gli stessi dati. Un set si trova nel `layers` namespace, che è il modo in cui OpsWorks Stacks archivia i dati. L'altro set si trova nello spazio dei nomi `role` namespace, che è il modo in cui il server Chef archivia i dati equivalenti. Lo scopo del `role` namespace è consentire l'esecuzione del codice di ricerca implementato per il server Chef su un'istanza Stacks. OpsWorks Se stai scrivendo codice specifico per OpsWorks Stacks, puoi usare uno dei due `layers:php-app` o `role:php-app` l'esempio precedente e `search` restituiresti lo stesso risultato.

## Utilizzo di contenitori di dati
<a name="workingcookbook-chef11-10-databag"></a>

Puoi utilizzare il [metodo `data_bag_item`](http://docs.chef.io/dsl_recipe.html#data-bag-item) di Chef nelle ricette per eseguire query sulle informazioni incluse nei contenitori di dati. Puoi utilizzare la stessa sintassi valida per il server Chef. Tuttavia, OpsWorks Stacks recupera i dati dagli attributi di configurazione e distribuzione dello stack dell'istanza. Tuttavia, OpsWorks Stacks attualmente non supporta gli ambienti Chef, quindi `node.chef_environment` ritorna sempre. `_default`

Puoi creare un contenitore di dati utilizzando dati JSON personalizzati per aggiungere uno o più attributi all'attributo `[:opsworks][:data_bags]`. L'esempio seguente mostra il formato generale per la creazione di un contenitori di dati in formato JSON personalizzato.

**Nota**  
Non puoi creare un contenitore di dati mediante la sua aggiunta nell'archivio di libri di ricette. Devi utilizzare dati JSON personalizzati.

```
{
  "opsworks": {
    "data_bags": {
      "bag_name1": {
        "item_name1: {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      "bag_name2": {
        "item_name1": {
          "key1" : “value1”,
          "key2" : “value2”,
          ...
        }
      },
      ...
    }
  }
}
```

In genere [specifichi dati JSON personalizzati per lo stack](workingstacks-json.md). Questa operazione installa gli attributi personalizzati in ogni istanza per ciascun evento del ciclo di vita successivo. Puoi anche specificare dati JSON personalizzati quando distribuisci un'app, ma tali attributi vengono installati solo per la distribuzione specifica e potrebbero venire installati solo in un set selezionato di istanze. Per ulteriori informazioni, consulta [Distribuzione di app](workingapps-deploying.md).

Il seguente esempio di dati JSON personalizzati crea un contenitore di dati denominato `myapp`. Include un elemento, `mysql`, con due coppie chiave-valore.

```
{ "opsworks": {
    "data_bags": {
      "myapp": {
        "mysql": { 
          "username": "default-user",
          "password": "default-pass"
        }
      }
    }
  }
}
```

Per utilizzare i dati nella ricetta, puoi eseguire una chiamata a `data_bag_item` e passare i nomi del contenitore di dati e dei valori, come illustrato nel seguente segmento.

```
mything = data_bag_item("myapp", "mysql")
Chef::Log.info("The username is '#{mything['username']}' ")
```

Per modificare i dati nel contenitore di dati, è sufficiente modificare i dati JSON personalizzati. Questa operazione li installerà nelle istanze dello stack per il successivo evento del ciclo di vita. 

## Utilizzo di Berkshelf
<a name="workingcookbook-chef11-10-berkshelf"></a>

Con gli stack Chef 0.9 e Chef 11.4 puoi installare solo un archivio di libri di ricette personalizzati. Con gli stack Chef 11.10 puoi utilizzare [Berkshelf](http://berkshelf.com/) per gestire i libri di ricette e le relative dipendenze. Berkshelf ti consente inoltre di installare libri di ricette da più archivi. Per ulteriori informazioni, consulta [Creazione di pacchetti di dipendenze di libri di ricette a livello locale](best-practices-packaging-cookbooks-locally.md). In particolare, con Berkshelf, puoi installare libri di cucina della community OpsWorks compatibili con Stacks direttamente dai loro repository invece di doverli copiare nel tuo repository di libri di cucina personalizzato. Le versioni di Berkshelf supportate dipendono dal sistema operativo. Per ulteriori informazioni, consulta [OpsWorks Sistemi operativi impilati](workinginstances-os.md).

Per usare Berkshelf, devi abilitarlo in modo esplicito, come descritto in [Installazione di libri di ricette personalizzati](workingcookbook-installingcustom-enable.md). Devi quindi includere un file `Berksfile` nella directory principale dell'archivio di libri di ricette, in cui specifichi i libri di ricette da installare. 

Per specificare un'origine esterna di libri di ricette in un file Berksfile, all'inizio del file devi includere un attributo di origine che specifica l'URL dell'archivio predefinito. Berkshelf cercherà i libri di cucina nel codice sorgente a meno che tu non specifichi esplicitamente un repository. URLs Devi quindi includere una riga per ogni libro di ricette che vuoi installare usando il formato seguente: 

```
cookbook 'cookbook_name', ['>= cookbook_version'], [cookbook_options]
```

I campi dopo `cookbook` indicano il libro di ricette specifico.
+ *cookbook\$1name*— (Obbligatorio) Specificate il nome del libro di cucina.

  Se non includi altri campi, Berkshelf installa il ricettario dalla fonte specificata. URLs
+ *cookbook\$1version*— (Facoltativo) Specificate la versione o le versioni del libro di cucina.

  Puoi utilizzare un prefisso, ad esempio `=` o `>=`, per specificare una determinata versione o un intervallo di versioni accettabili. Se non specifichi una versione, Berkshelf installa la più versione recente.
+ *cookbook\$1options*— (Facoltativo) L'ultimo campo è un hash contenente una o più coppie chiave-valore che specificano opzioni come la posizione del repository.

  Ad esempio, puoi includere una chiave `git` per designare un determinato archivio Git e una chiave `tag` per designare un determinato ramo dell'archivio. Il metodo migliore per essere sicuro di installare il libro di ricette desiderato è specificare il ramo dell'archivio.

**Importante**  
Non dichiarare i libri di ricette includendo una riga `metadata` nel file Berksfile e dichiarando le dipendenze del libro di ricette in `metadata.rb`. Per garantirne il corretto funzionamento, entrambi i file devono trovarsi nella stessa directory. Con OpsWorks Stacks, il Berksfile deve trovarsi nella directory principale del repository, ma i file devono trovarsi nelle rispettive directory `metadata.rb` dei libri di cucina. È consigliabile invece dichiarare in modo esplicito i libri di ricette esterni nel file Berksfile.

Di seguito è riportato un esempio di file Berksfile che mostra diversi modi per specificare i libri di ricette. Per ulteriori informazioni su come creare un file Berksfile, consulta [Berkshelf](http://berkshelf.com/).

```
source "https://supermarket.chef.io"

cookbook 'apt'
cookbook 'bluepill', '>= 2.3.1'
cookbook 'ark', git: 'git://github.com/opscode-cookbooks/ark.git'
cookbook 'build-essential', '>= 1.4.2', git: 'git://github.com/opscode-cookbooks/build-essential.git', tag: 'v1.4.2'
```

Questo file installa i seguenti di libri di ricette:
+ La versione più recente di `apt` dall'archivio di libri di ricette della community.
+ La versione più recente di `bluepill` dai libri di ricette della community, purché la relativa versione sia 2.3.1 o successive.
+ La versione più recente di `ark` da un archivio specificato.

  L'URL di questo esempio si riferisce a un archivio pubblico di libri di cucina della comunità su GitHub, ma puoi installare libri di cucina da altri repository, inclusi gli archivi privati. Per ulteriori informazioni, consulta [Berkshelf](http://berkshelf.com/).
+ Il libro di ricette `build-essential` dal ramo v1.4.2 dell'archivio specificato.

Un archivio di libri di ricette personalizzati può contenere libri di ricette personalizzati e un file Berksfile. In tal caso, OpsWorks Stacks installa entrambi i set di libri di cucina, il che significa che un'istanza può avere fino a tre repository di libri di cucina. 
+ I libri di ricette predefiniti vengono installati in `/opt/aws/opsworks/current/cookbooks`.
+ Se l'archivio di libri di ricette personalizzati contiene libri di ricette, essi vengono installati in `/opt/aws/opsworks/current/site-cookbooks`.
+ Se hai abilitato Berkshelf e l'archivio di libri di ricette personalizzati include un file Berksfile, i libri di ricette specificati vengono installati in `/opt/aws/opsworks/current/berkshelf-cookbooks`.

[**I ricettari integrati e i ricettari personalizzati vengono installati su ogni istanza durante la configurazione e non vengono successivamente aggiornati a meno che non si esegua manualmente il comando Update Custom Cookbooks stack.**](workingstacks-commands.md) OpsWorks Stacks viene eseguito `berks install` per ogni esecuzione di Chef, quindi i tuoi libri di cucina Berkshelf vengono aggiornati per ogni evento del [ciclo](workingcookbook-events.md) di vita, secondo le seguenti regole: 
+ Se l'archivio include una nuova versione del libro di ricette, questa operazione aggiorna il libro di ricette dall'archivio.
+ In caso contrario, questa operazione aggiorna i libri di ricette di Berkshelf da una cache locale.

**Nota**  
L'operazione sovrascrive i libri di ricette di Berkshelf. Pertanto, se hai modificato le copie locali dei libri di ricette, le modifiche verranno sovrascritte. Per ulteriori informazioni, consulta [Berkshelf](http://berkshelf.com/).

Puoi anche aggiornare i libri di ricette di Berkshelf eseguendo il comando **Update Custom Cookbooks (Aggiorna libri di ricette personalizzati)** a livello di stack. Questa operazione aggiorna sia i libri di ricette di Berkshelf che quelli personalizzati.

# Implementazione delle ricette per gli stack Chef 11.4
<a name="workingcookbook-chef11-4"></a>

**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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

**Importante**  
Non riutilizzare i nomi di libri di ricette predefiniti per i libri di ricette personalizzati e per quelli della community. I libri di ricette personalizzati con lo stesso nome dei libri di ricette predefiniti potrebbero avere esito negativo. [Per un elenco completo dei libri di cucina integrati disponibili con gli stack Chef 11.10, 11.4 e 0.9, consulta il repository opsworks-cookbooks su. GitHub](https://github.com/aws/opsworks-cookbooks)

Il limite principale degli stack Chef 11.4 è data dal fatto che le ricette non possono utilizzare i contenitori di dati e la ricerca di Chef. Tuttavia, OpsWorks Stacks installa gli [attributi di configurazione e distribuzione dello stack](workingcookbook-json.md) su ogni istanza che contengono molte delle informazioni che si ottengono con la ricerca, tra cui:
+ Dati definiti dall'utente dalla console, ad esempio nomi dell'host o delle app.
+ Dati di configurazione dello stack generati dal servizio OpsWorks Stacks, come i layer, le app e le istanze dello stack, e dettagli su ciascuna istanza come l'indirizzo IP.
+ Attributi JSON personalizzati che contengono i dati forniti dall'utente e che possono avere lo stesso scopo dei contenitori di dati.

OpsWorks Stacks installa una versione corrente degli attributi di configurazione e distribuzione dello stack su ogni istanza per ogni evento del ciclo di vita, prima di iniziare l'esecuzione Chef dell'evento. I dati sono disponibili per le ricette tramite la sintassi `node[:attribute][:child_attribute][...]` standard. Ad esempio, gli attributi di configurazione e distribuzione dello stack includono il nome dello stack `node[:opsworks][:stack][:name]`.

Il seguente segmento di uno dei libri di ricette predefiniti recupera il nome dello stack e lo utilizza per creare un file di configurazione.

```
template '/etc/ganglia/gmetad.conf' do
  source 'gmetad.conf.erb'
  mode '0644'
  variables :stack_name => node[:opsworks][:stack][:name]
  notifies :restart, "service[gmetad]"
end
```

Molti dei valori degli attributi di configurazione e distribuzione dello stack contengono più attributi. Devi eseguire iterazioni su questi attributi per recuperare le informazioni necessarie. L'esempio seguente mostra un segmento di attributi di configurazione e distribuzione dello stack, rappresentati sotto forma di oggetto JSON per comodità. Contiene un attributo di livello superiore, `deploy`, che contiene un attributo per ogni app dello stack, denominato con il nome breve dell'app.

```
{
  ...
  "deploy": {
    "app1_shortname": {
      "document_root": "app1_root",
      "deploy_to": "deploy_directory",
      "application_type": "php",
      ...
    },
    "app2_shortname": {
      "document_root": "app2_root",
      ...
    }
  },
  ...
}
```

Ogni attributo dell'app contiene un set di attributi che caratterizzano l'app. Ad esempio, l'attributo `deploy_to` rappresenta la directory di distribuzione dell'app. Il seguente segmento imposta l'utente, il gruppo e il percorso della directory di distribuzione di ogni app.

```
node[:deploy].each do |application, deploy|
  opsworks_deploy_dir do
    user deploy[:user]
    group deploy[:group]
    path deploy[:deploy_to]
  end
  ...
end
```

Per ulteriori informazioni sugli attributi di configurazione e distribuzione dello stack, consulta [Personalizzazione degli stack OpsWorks](customizing.md). Per ulteriori informazioni sulle directory di distribuzione, consulta [Ricette di ditribuzione](create-custom-deploy.md).

Gli stack Chef 11.4 non supportano i contenitori di dati, ma puoi aggiungere dati arbitrari agli attributi di configurazione e distribuzione dello stack specificando [dati JSON personalizzati](workingstacks-json.md). Le ricette potranno quindi accedere ai dati utilizzando la sintassi di nodo standard di Chef. Per ulteriori informazioni, consulta [Utilizzo di un JSON personalizzato](workingcookbook-json-override.md).

Se hai bisogno della funzionalità di un data bag crittografato, un'opzione è archiviare gli attributi sensibili in un luogo sicuro, ad esempio un bucket Amazon S3 privato. Le tue ricette possono quindi utilizzare l'[SDK AWS Ruby](https://aws.amazon.com/documentation/sdkforruby/), installato su tutte le istanze OpsWorks Stacks, per scaricare i dati dal bucket. 

**Nota**  
Ogni istanza Stacks ha un profilo di istanza. OpsWorks Il [ruolo IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/WorkingWithRoles.html) associato specifica a quali risorse AWS possono accedere le applicazioni in esecuzione sull'istanza. Affinché le tue ricette possano accedere a un bucket Amazon S3, la policy del ruolo deve includere un'istruzione simile alla seguente, che concede l'autorizzazione a recuperare i file da un bucket specificato.   

```
"Action": ["s3:GetObject"],
"Effect": "Allow",
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",
```
Per ulteriori informazioni sui profili delle istanze, consulta [Specificazione delle autorizzazioni per le app in esecuzione su istanze EC2](opsworks-security-appsrole.md).

# Migrazione di un stack Linux esistente in una nuova versione di Chef
<a name="workingcookbook-chef11-migrate"></a>

**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 Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Puoi utilizzare la console, l'API o la CLI di OpsWorks Stacks per migrare i tuoi stack Linux a una versione più recente di Chef. Le ricette potrebbero tuttavia richiedere qualche modifica per poter essere compatibili con la versione più recente. Durante la preparazione della migrazione di uno stack, tieni presente le seguenti considerazioni.
+ Non è possibile modificare le versioni OpsWorks dello stack di Stacks da Chef 11 a Chef 12 modificando o clonando lo stack. Non è possibile eseguire l'aggiornamento della versione principale di Chef utilizzando la procedura descritta in questa sezione. Per ulteriori informazioni sulla transizione da Chef 11.10 a Chef 12, consulta [Implementazione delle ricette: Chef 12](workingcookbook-chef12-linux.md).
+ La transizione da una versione di Chef a un'altra richiede un certo numero di modifiche, alcune delle quali di maggiore entità.

  Per ulteriori informazioni sulla transizione da Chef 0.9 a Chef 11.4, consulta [Migrazione in una nuova versione di Chef](#workingcookbook-chef11-migrate). Per ulteriori informazioni sulla transizione da Chef 11.4 a Chef 11.10, consulta [Implementazione delle ricette: Chef 11.10](workingcookbook-chef11-10.md). Per ulteriori informazioni sulla transizione da Chef 11.10 a Chef 12, consulta [Implementazione delle ricette: Chef 12](workingcookbook-chef12-linux.md).
+ Le esecuzioni di Chef utilizzano una versione di Ruby diversa sugli stack Chef 0.9 e Chef 11.4 (Ruby 1.8.7), sugli stack Chef 11.10 (Ruby 2.0.0) e sugli stack Chef 12 (Ruby 2.1.6).

  Per ulteriori informazioni, consulta [Versioni di Ruby](workingcookbook-ruby.md).
+ Gli stack Chef 11.10 gestiscono l'installazione dei libri di ricette in modo diversi rispetto agli stack Chef 0.9 o Chef 11.4.

  Questa differenza potrebbe causare problemi durante la migrazione degli stack che utilizzano libri di ricette personalizzati in Chef 11.10. Per ulteriori informazioni, consulta [Installazione e precedenza dei libri di ricette](workingcookbook-chef11-10.md#workingcookbook-chef11-10-override).

 Le seguenti linee guida sono consigliate per la migrazione di uno stack Chef in una versione più recente di Chef:

**Per eseguire la migrazione di uno stack in una versione più recente Chef**

1. [Clonare lo stack di produzione](workingstacks-cloning.md). Nella pagina **Clone Stack (Clona stack)**, fare clic su **Advanced>> (Avanzate>>)** per visualizzare la sezione **Configuration Management (Gestione configurazione** e modificare **Chef version (Versione Chef)** immettendo la versione più aggiornata.
**Nota**  
Se si sta utilizzando uno stack Chef 0.9, non è possibile effettuare l'aggiornamento direttamente a Chef 11.10; è necessario effettuare prima l'aggiornamento a Chef 11.4. Se si desidera migrare lo stack a Chef 11.10 prima del test delle ricette, attendere 20 minuti per l'esecuzione dell'aggiornamento e quindi effettuare l'aggiornamento dello stack da 11.4 a 11.10.

1. Aggiungere le istanze ai livelli e testare le applicazioni e i libri di ricette dello stack clonano sul sistema di test o temporaneo. Per ulteriori informazioni, consulta la pagina relativa a [Chef](https://docs.chef.io/index.html).

1. Quando i risultati del test sono soddisfacenti, procedere in uno dei seguenti modi:
   + Se questa è la versione desiderata di Chef, è possibile utilizzare lo stack clonato come stack di produzione oppure ripristinare la versione di Chef sullo stack di produzione. 
   + Se si esegue la migrazione di uno stack Chef 0.9 a Chef 11.10 in due fasi, ripetere il processo per migrare lo stack da Chef 11.4 a Chef 11.10.

**Nota**  
Quando si testano le ricette, è possibile [utilizzare SSH per connettersi all'](workinginstances-ssh.md)istanza e quindi utilizzare il comando run\$1command della [[CLI](agent-run.md) di Instance Agent](agent.md) per eseguire le ricette associate ai vari eventi del ciclo di vita. La CLI dell'agente risulta particolarmente utile per il test delle ricette di impostazione (Configurazione) perché è possibile utilizzarla anche se la configurazione ha esito negativo e l'istanza non raggiunge lo stato online. È inoltre possibile utilizzare il [comando Setup stack (Configura stack)](workingstacks-commands.md) per rieseguire le ricette di impostazione (Configurazione), ma tale comando è disponibile solo se la configurazione ha esito positivo e l'istanza è online. 

È possibile aggiornare uno stack in esecuzione a una nuova versione di Chef.

**Per aggiornare uno stack in esecuzione a una nuova versione di Chef**

1. [Modificare lo stack](workingstacks-edit.md) mediante la modifica dell'impostazione dell'opzione **Chef version (Versione di Chef)** per lo stack.

1. Salva le nuove impostazioni e attendi che OpsWorks Stacks aggiorni le istanze, operazione che in genere richiede 15-20 minuti.

**Importante**  
OpsWorks Stacks non sincronizza l'aggiornamento della versione di Chef con gli eventi del ciclo di vita. Se si desidera aggiornare la versione di Chef in uno stack di produzione, devi assicurarti che l'aggiornamento è stato completato prima del successivo [evento del ciclo di vita](workingcookbook-events.md). Se si verifica un evento, in genere un evento Deploy o Configure, l'agent dell'istanza aggiorna i libri di cucina personalizzati ed esegue le ricette assegnate all'evento, indipendentemente dal fatto che l'aggiornamento della versione sia completo o meno. Non esiste alcun modo diretto per determinare quando l'aggiornamento della versione è completato, se non controllare i log di distribuzione, dove viene inclusa la versione di Chef.