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

Ricette

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.

Le ricette sono applicazioni Ruby che definiscono una configurazione di sistema. Esse installano pacchetti, creano file di configurazione dai modelli, eseguono comandi shell, creano file e directory e così via. In genere, gli AWS OpsWorks Stacks eseguono le ricette automaticamente quando si verifica un evento del ciclo di vita sull'istanza, ma è anche possibile eseguirle in modo esplicito in qualsiasi momento utilizzando il comando Execute Recipes stack. Per ulteriori informazioni, consulta About Recipes (Informazioni sulle ricette).

Un ricetta in genere consiste in gran parte in una serie di risorse, ciascuna delle quali rappresenta lo stato desiderato di un aspetto del sistema. Ogni risorsa include una serie di attributi che definiscono lo stato desiderato e specificano l'operazione da compiere. Chef associa ogni risorsa a un provider appropriato che compie l'operazione. Per ulteriori informazioni, consulta Resources and Providers Reference (Riferimenti risorse e provider).

Una risorsa package aiuta a gestire pacchetti software sulle istanze Linux. L'esempio seguente installa il pacchetto Apache.

... package 'apache2' do case node[:platform] when 'centos','redhat','fedora','amazon' package_name 'httpd' when 'debian','ubuntu' package_name 'apache2' end action :install end ...

Chef utilizza il provider di pacchetto appropriato per la piattaforma. Gli attributi di risorsa hanno spesso solo assegnato un valore, ma è possibile utilizzare le operazioni logiche Ruby per eseguire incarichi condizionali. L'esempio utilizza un operatore case che utilizza node[:platform] per identificare il sistema operativo dell'istanza e imposta l'attributo package_name di conseguenza. È possibile inserire gli attributi in una ricetta utilizzando la sintassi standard di nodo Chef e Chef la sostituisce con il valore associato. È possibile utilizzare qualsiasi attributo nell'oggetto nodo, non solo gli attributi del libro di ricette.

Dopo aver determinato il nome di pacchetto appropriato, il segmento di codice termina con un'azione install che installa il pacchetto. Altre azioni per questa risorsa includono upgrade e remove. Per ulteriori informazioni, consulta package.

Spesso è utile dividere attività di installazione e configurazione complesse in una o più sottoattività, ognuna implementata come una ricetta separata e farle eseguire alla ricetta primaria al momento opportuno. L'esempio seguente mostra la riga di codice che segue l'esempio precedente:

include_recipe 'apache2::service'

Per fare in modo che una ricetta esegua una ricetta figlia, utilizzare la parola chiave include_recipe seguita dal nome della ricetta. Le ricette vengono identificate utilizzando la sintassi Chef standard CookbookName::RecipeName, dove RecipeName omette l'estensione .rb.

Nota

Una dichiarazione include_recipe esegue in modo efficace la ricetta in quel punto della ricetta primaria. Tuttavia, ciò che effettivamente accade è che Chef sostituisce ogni dichiarazione include_recipe con il codice della ricetta specificato prima di eseguire la ricetta primaria.

Una risorsa directory rappresenta una directory, come per esempio quella che conterrà i file di un pacchetto. La seguente risorsa default.rb crea una directory di log Linux.

directory node[:apache][:log_dir] do mode 0755 action :create end

La directory di log è definita in uno dei file di attributo del libro di ricette. La risorsa specifica la modalità di directory come 0755 e utilizza un'operazione create per creare la directory. Per ulteriori informazioni, consulta directory. È anche possibile utilizzare questa risorsa con le istanze Windows.

La risorsa execute rappresenta i comandi, come per esempio comandi shell o script. L'esempio seguente genera file module.load.

execute 'generate-module-list' do if node[:kernel][:machine] == 'x86_64' libdir = 'lib64' else libdir = 'lib' end command "/usr/local/bin/apache2_module_conf_generate.pl /usr/#{libdir}/httpd/modules /etc/httpd/mods-available" action :run end

La risorsa prima determina la tipologia di CPU. [:kernel][:machine] è un altro degli attributi automatici che Chef genera per rappresentare varie proprietà di sistema, in questo caso la tipologia di CPU. Poi specifica il comando, uno script Perl e utilizza un'operazione run per eseguire lo script, che genera il file module.load. Per ulteriori informazioni, consulta execute.

Una template risorsa rappresenta un file, in genere un file di configurazione, che deve essere generato da uno dei file modello del libro di cucina. L'esempio seguente crea un file di configurazione httpd.conf dal modello apache2.conf.erb che è stato illustrato in Modelli.

template 'apache2.conf' do case node[:platform] when 'centos','redhat','fedora','amazon' path "#{node[:apache][:dir]}/conf/httpd.conf" when 'debian','ubuntu' path "#{node[:apache][:dir]}/apache2.conf" end source 'apache2.conf.erb' owner 'root' group 'root' mode 0644 notifies :restart, resources(:service => 'apache2') end

La risorsa determina il nome e la posizione del file generato in base al sistema operativo dell'istanza. Poi specifica apache2.conf.erb come modello da utilizzare per generare il file e imposta il proprietario, il gruppo e la modalità del file. Esegue l'operazione notify per notificare la risorsa service che rappresenta il server Apache per riavviare il server. Per ulteriori informazioni, consulta template.