Sostituzione degli attributi integrati - 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à.

Sostituzione degli attributi integrati

Importante

Il AWS OpsWorks Stacks il 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 Squadra su AWS Re:post o tramite AWS Supporto Premium.

Nota

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

AWS 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:

  • Definisci l'attributo in modalità personalizzata. JSON

    Questo approccio ha il vantaggio di essere semplice e flessibile. Tuttavia, è necessario inserire il valore personalizzato JSON manualmente, quindi non esiste un modo affidabile 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 a quello personalizzatoJSON, ma è più efficace perché consente di mettere i libri di cucina 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 sovrascrivere gli attributi con customJSON, consulta. Utilizzo di Custom JSON Per una discussione generale su come sostituire gli attributi, consulta Sostituzione degli attributi.

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.

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, default.rb, usa il modello 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 apache2apache.rb del libro di ricette , 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.

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 AWS OpsWorks Stacks successivamente modifica il apache.rb file integrato, le ricette non otterranno i nuovi valori a meno che non aggiorni manualmente la versione. Utilizzandocustomize.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.

  2. Nella directory apache2 creare una directory attributes.

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

  4. 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. Registra il file URL per un uso successivo. 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.

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

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

Per utilizzare l'attributo personalizzato
  1. Aprire AWS OpsWorksConsole Stacks, quindi scegli Aggiungi stack.

  2. 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).

    • SSHChiave predefinita: una coppia di EC2 chiavi

      Se devi creare una coppia di EC2 chiavi, consulta Amazon EC2 Key Pairs. Nota che la key pair deve appartenere alla stessa AWS regione 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

    • ArchivioURL: l'archivio dei libri di cucina URL 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.

  3. Scegli Aggiungi un livello, quindi aggiungi un livello Java App Server con le impostazioni predefinite allo stack.

  4. Aggiungere un'istanza 24/7 con impostazioni predefinite al livello, quindi avviare l'istanza.

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

  5. Dopo che l'istanza è online, connettiti ad essa con SSH. 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 ...