

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

# Sostituzione degli attributi integrati
<a name="cookbooks-101-opsworks-attributes"></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).

**Nota**  
Questo argomento si applica solo agli stack Linux. Gli attributi integrati sugli stack Windows non possono essere sostituiti.

OpsWorks Stacks installa un set di libri di cucina integrati su ogni istanza. Molti dei libri di ricette integrati supportano i livelli integrati mentre i loro file di attributi definiscono varie impostazioni predefinite di sistema e delle applicazioni, come le impostazioni di configurazione del server Apache. Inserendo queste impostazioni nei file di attributi, puoi personalizzare molte impostazioni di configurazione sostituendo l'attributo integrato corrispondente in uno dei seguenti modi:
+ Definire l'attributo in un JSON personalizzato.

  Questo approccio ha il vantaggio di essere semplice e flessibile. Tuttavia, devi immettere manualmente il JSON personalizzato, pertanto non vi sono metodi affidabili per gestire le definizioni degli attributi.
+ Implementa un libro di ricette personalizzato e definisci l'attributo in un file di attributi `customize.rb`.

  Questo approccio è meno flessibile rispetto all'utilizzo di un JSON personalizzato, ma è più affidabile poiché puoi mettere i libri di ricette personalizzati sotto il controllo del codice sorgente.

In questo argomento viene descritto come utilizzare un file degli attributi del libro di ricette personalizzato per sostituire gli attributi integrati, utilizzando ad esempio il server Apache. Per ulteriori informazioni su come sostituire gli attributi con un JSON personalizzato, consulta [Utilizzo di un JSON personalizzato](workingcookbook-json-override.md). Per una discussione generale su come sostituire gli attributi, consulta [Sostituzione degli attributi](workingcookbook-attributes.md).

**Nota**  
La sostituzione degli attributi rappresenta il modo migliore per personalizzare le impostazioni di configurazione, ma le impostazioni non sono sempre rappresentate dagli attributi. In questo caso, spesso puoi personalizzare il file di configurazione sostituendo il modello che le ricette integrate utilizzano per creare il file di configurazione. Per vedere un esempio, consulta [Sostituzione dei modelli integrati](cookbooks-101-opsworks-templates.md).

Gli attributi integrati in genere rappresentano valori nei file modello che le ricette di impostazione utilizzano per creare i file di configurazione. Ad esempio, una delle ricette di impostazione `apache2`, [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/recipes/default.rb), usa il modello [https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/templates/default/apache2.conf.erb) per creare il file di configurazione principale del server Apache, `httpd.conf` (Amazon Linux) o `apache2.conf` (Ubuntu). Di seguito viene riportato un estratto del file modello:

```
...
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %>
#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %>
##
## Server-Pool Size Regulation (MPM specific)
##

...
```

L'impostazione `KeepAliveTimeout` in questo esempio è il valore dell'attributo `[:apache][:keepalivetimeout]`. Il valore predefinito di questo attributo è definito nel file di attributi `apache2`[`apache.rb` del libro di ricette ](https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.10/apache2/attributes/apache.rb), come mostrato nell'estratto seguente:

```
...
# General settings
default[:apache][:listen_ports] = [ '80','443' ]
default[:apache][:contact] = 'ops@example.com'
default[:apache][:log_level] = 'info'
default[:apache][:timeout] = 120
default[:apache][:keepalive] = 'Off'
default[:apache][:keepaliverequests] = 100
default[:apache][:keepalivetimeout] = 3
...
```

**Nota**  
Per ulteriori informazioni sugli attributi integrati comunemente utilizzati, consulta [Attributi dei libri di ricette predefiniti](attributes-recipes.md).

Per supportare la sostituzione degli attributi integrati, tutti i libri di ricette integrati contengono un file degli attributi `customize.rb`, incorporato in tutti i moduli tramite una direttiva `include_attribute`. I file `customize.rb` dei libri di ricette integrati non contengono attributi e non avranno alcun effetto sugli attributi incorporati. Per sostituire gli attributi integrati, devi creare un libro di ricette personalizzato con lo stesso nome del libro di ricette integrato e inserire le definizioni degli attributi personalizzati in un file degli attributi denominato `customize.rb`. Questo file ha la precedenza rispetto alla versione integrata ed è incluso in tutti i moduli correlati. Se definisci gli attributi integrati nel tuo `customize.rb`, questi sostituiscono gli attributi integrati corrispondenti.

Questo esempio illustra come sostituire l'attributo `[:apache][:keepalivetimeout]` integrato per impostare il relativo valore su 5 anziché su 3. Puoi utilizzare un approccio simile per qualsiasi attributo integrato. Tuttavia, fai attenzione agli attributi che sostituisci. Ad esempio, la sostituzione degli attributi nello spazio dei nomi `opsworks` potrebbe causare problemi ad alcune ricette integrate. 

**Importante**  
Non sostituire gli attributi integrati modificando una copia del file degli attributi integrati. Ad esempio, *potresti* inserire una copia di `apache.rb` nella cartella `apache2/attributes` del tuo libro di ricette personalizzato e modificare alcune impostazioni. Tuttavia, questo file prevale sulla versione integrata e le ricette integrate utilizzeranno la tua versione di `apache.rb`. Se OpsWorks Stacks successivamente modifica il `apache.rb` file integrato, le ricette non otterranno i nuovi valori a meno che non aggiorni manualmente la versione. Utilizzando`customize.rb`, sovrascrivete solo gli attributi specificati; le ricette integrate continuano a ottenere automaticamente up-to-date valori per ogni attributo che non avete sovrascritto.

Per iniziare, crea un libro di ricette personalizzato.

**Per creare il libro di ricette**

1. Nella directory `opsworks_cookbooks` creare la directory del libro di ricette denominata `apache2` e accedervi.

   Per ignorare gli attributi integrati, il libro di ricette personalizzato deve avere lo stesso nome del libro di ricette integrato, `apache2` in questo esempio.

1. Nella directory `apache2` creare una directory `attributes`.

1. Aggiungere un file denominato `customize.rb` alla directory `attributes` e utilizzarlo per definire gli attributi del libro di ricette integrato che si desidera ignorare. Per questo esempio il file dovrebbe contenere quanto segue: 

   ```
   normal[:apache][:keepalivetimeout] = 5
   ```
**Importante**  
Per sostituire un attributo integrato, un attributo personalizzato deve essere di tipo `normal` o versione successiva e avere esattamente lo stesso nome di nodo dell'attributo integrato corrispondente. Il tipo `normal` garantisce che l'attributo personalizzato prevalga sugli attributi integrati, tutti di tipo `default`. Per ulteriori informazioni, consulta [Precedenza degli attributi](workingcookbook-attributes-precedence.md).

1. Crea un `.zip` archivio di `opsworks_cookbooks` named `opsworks_cookbooks.zip` e carica l'archivio in un bucket Amazon Simple Storage Service (Amazon S3). Per semplicità, [rendere pubblico il file](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html). Registrare l'URL per utilizzarlo successivamente. Puoi anche archiviare i tuoi libri di cucina in un archivio privato di Amazon S3 o in altri tipi di repository. Per ulteriori informazioni, consulta [Repository dei libri di ricette](workingcookbook-installingcustom-repo.md).

   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?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) o [Come eliminare un bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html).

Per utilizzare l'attributo personalizzato, creare uno stack e installare il libro di ricette.

**Per utilizzare l'attributo personalizzato**

1. Aprire la [console OpsWorks Stacks](https://console.aws.amazon.com/opsworks/) e scegliere **Add Stack (Aggiungi stack)**.

1. Specificare le seguenti impostazioni standard.
   + **Nome:** ApacheConfig
   + **Regione**: Stati Uniti occidentali (Oregon)

     Puoi inserire il tuo stack in qualsiasi regione, ma per i tutorial consigliamo US West (Oregon).
   + **Chiave SSH predefinita**: una coppia di EC2 chiavi

     Se devi creare una coppia di EC2 chiavi, consulta [Amazon EC2 Key Pairs](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html). La coppia di chiavi deve appartenere alla stessa regione AWS dello stack.

   Scegliere **Advanced (Avanzate) >>**, impostare **Use custom Chef cookbooks (Usa libri di ricette Chef personalizzati)** su **Yes (Sì)**, quindi specificare le seguenti impostazioni.
   + **Tipo di repository**: **Http** Archive
   + URL del **repository: l'URL** dell'archivio del libro di cucina che hai registrato in precedenza

   Accettare i valori predefiniti di altre impostazioni e scegliere **Add Stack (Aggiungi stack)** per creare lo stack.
**Nota**  
Questo esempio utilizza il sistema operativo predefinito, ovvero Amazon Linux. Se preferisci, puoi utilizzare Ubuntu. L'unica differenza è che nei sistemi Ubuntu, la ricetta Setup integrata produce un file di configurazione con le stesse impostazioni denominato `apache2.conf` e lo inserisce nella directory `/etc/apache2`. 

1. **Scegliete Aggiungi un layer**, quindi [aggiungete un layer Java App Server](layers-java.md) con le impostazioni predefinite allo stack.

1. [Aggiungere un'istanza 24/7](workinginstances-add.md) con impostazioni predefinite al livello, quindi avviare l'istanza.

   Un'istanza t2.micro è sufficiente per questo esempio.

1. Una volta che l'istanza è online, [connettersi a essa con SSH](workinginstances-ssh.md). Il file `httpd.conf` è nella directory `/etc/httpd/conf`. Se si esamina il file, dovrebbe essere visibile l'impostazione `KeepAliveTimeout` personalizzata. Le restanti impostazioni utilizzeranno i valori predefiniti presenti nel file `apache.rb` integrato. La parte pertinente di `httpd.conf` dovrebbe risultare simile alla seguente:

   ```
   ...
   #
   # KeepAliveTimeout: Number of seconds to wait for the next request from the
   # same client on the same connection.
   #
   KeepAliveTimeout 5
   ...
   ```