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 Supporto AWS Team su AWS re:post
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
, dove CookbookName
::RecipeName
omette l'estensione RecipeName
.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
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 determina innanzitutto il tipo. CPU [:kernel][:machine]
è un altro degli attributi automatici che Chef genera per rappresentare varie proprietà del sistema, in questo caso il CPU tipo. 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