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à.
Esempio 6: creazione di file
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
Dopo aver creato le directory, spesso è necessario aggiungervi file di configurazione, file di dati e così via. Questo argomento mostra due modi per installare i file su un'istanza.
Installazione di un file da un libro di ricette
Il modo più semplice di installare un file su un'istanza è utilizzando una risorsa cookbook_file/srv/www/shared dopo la creazione della directory. Ecco la ricetta originale come riferimento.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
Per configurare il libro di ricette
-
Nella directory
opsworks_cookbooks, creare una directory denominatacreatefilee aprirla. -
Aggiungere un file
metadata.rbacreatefilecon il contenuto seguente.name "createfile" version "0.1.0" -
Inizializzare e configurare Test Kitchen come descritto in Esempio 1: installazione di pacchetti, quindi rimuovere CentOS dall'elenco
platforms. -
Aggiungere la sottodirectory
recipesacreatefile.
Il file da installare contiene i seguenti dati JSON.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }
Per configurare il file di dati
-
Aggiungere la sottodirectory
filesacreatefilee la sottodirectorydefaultafiles. Qualsiasi file installato concookbook_filedeve trovarsi in una sottodirectory difiles, comefiles/defaultin questo esempio.Nota
Per specificare diversi file per sistemi differenti, è possibile inserire ogni file specifico in una sottocartella denominata secondo il sistema, ad esempio
files/ubuntu. La risorsacookbook_filecopia l'appropriato file specifico per il sistema, se esistente, altrimenti utilizza il filedefault. Per ulteriori informazioni, consulta cookbook_file. -
Creare un file denominato
example_data.jsoncon il JSON dell'esempio precedente e aggiungerlo afiles/default.
La seguente ricetta copia example_data.json in un percorso specificato.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end cookbook_file "/srv/www/shared/example_data.json" do source "example_data.json" mode 0644 action :create_if_missing end
Dopo che la risorsa della directory crea /srv/www/shared, la risorsa cookbook_file copia example_data.json in tale directory e imposta anche l'utente, il gruppo e la modalità del file.
Nota
La risorsa cookbook_file introduce una nuova operazione: create_if_missing. È inoltre possibile utilizzare un'operazione create, che però sovrascrive un file esistente. Se non si desidera sovrascrivere nulla, utilizzare create_if_missing, che installa example_data.json solo se non è già esistente.
Per eseguire la ricetta
-
Eseguire
kitchen destroyper iniziare con un'istanza nuova. -
Creare un file
default.rbche contiene la ricetta precedente e salvarlo inrecipes. -
Eseguire
kitchen converge, quindi accedere all'istanza per verificare che/srv/www/sharedcontengaexample_data.json.
Creazione di un file da un modello
La risorsa cookbook_file è utile per alcuni scopi, ma si limita a installare qualsiasi file presente nel libro di ricette. Una risorsa template
Questo esempio modifica il libro di ricette createfile perché sia utilizzata una risorsa template per installare una versione di example_data.json leggermente modificata.
Ecco come apparirà il file installato.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true, "a_string" : "some string", "platform" : "ubuntu" }
Le risorse del modello sono in genere utilizzate in combinazione con i file attributo, quindi l'esempio ne utilizza uno per definire i seguenti valori.
default['createfile']['my_name'] = 'myname' default['createfile']['your_name'] = 'yourname' default['createfile']['install_file'] = true
Per configurare il libro di ricette
-
Eliminare la directory
createfiledel libro di ricettefilese il relativo contenuto. -
Aggiungere la sottodirectory
attributesacreatefilee aggiungere adefault.rbil fileattributesche contiene le definizioni degli attributi precedenti.
Un modello è un file .erb che è fondamentalmente una copia del file finale, con alcuni dei contenuti rappresentati da segnaposti. Quando la risorsa template crea il file, copia i contenuti del modello nel file specificato e sovrascrive i segnaposto con i relativi valori assegnati. Ecco il modello per example_data.json.
{ "my_name" : "<%= node['createfile']['my_name'] %>", "your_name" : "<%= node['createfile']['your_name'] %>", "a_number" : 42, "a_boolean" : <%= @a_boolean_var %>, "a_string" : "<%= @a_string_var %>", "platform" : "<%= node['platform'] %>" }
I valori <%=...%> sono i segnaposto.
-
<%=node[...]%>rappresenta un nodo valore attributo.In questo esempio, il valore "your_name" è un segnaposto che rappresenta uno dei valori attributo del file attributo del libro di ricette.
-
<%=@...%>rappresenta il valore di una variabile definita nella risorsa del modello, come illustreremo più avanti.
Per creare il file del modello
-
Aggiungere la sottodirectory
templatesal libro di ricettecreatefilee la sottodirectorydefaultatemplates.Nota
La directory
templatesfunziona in modo analogo alla directoryfiles. È possibile inserire modelli specifici per il sistema in una sottodirectory, ad esempioubuntu, con nome assegnato a seconda del sistema. La risorsatemplateusa l'appropriato modello specifico per il sistema, se esistente, altrimenti utilizza il modellodefault. -
Creare un file denominato
example_data.json.erbe salvarlo nella directorytemplates/default. Il nome del modello è arbitrario, ma è in genere si crea aggiungendo.erbal nome del file, incluse le estensioni.
La seguente ricetta utilizza una risorsa template per creare /srv/www/shared/example_data.json.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end template "/srv/www/shared/example_data.json" do source "example_data.json.erb" mode 0644 variables( :a_boolean_var => true, :a_string_var => "some string" ) only_if {node['createfile']['install_file']} end
La risorsa template crea example_data.json da un modello e lo installa in /srv/www/shared.
-
Il nome del modello,
/srv/www/shared/example_data.json, specifica il percorso e il nome del file installato. -
L'attributo
sourcespecifica il modello utilizzato per creare il file. -
L'attributo
modespecifica la modalità di installazione del file. -
La risorsa definisce due variabili:
a_boolean_varea_string_var.Quando la risorsa crea
example_data.json, sovrascrive la variabile segnaposto del modello con i valori corrispondenti della risorsa. -
L'attributo di
only_ifprotezione indica alla risorsa di creare il file solo se['createfile']['install_file']è impostato sutrue.
Per eseguire la ricetta
-
Eseguire
kitchen destroyper iniziare con un'istanza nuova. -
Sostituire il codice in
recipes/default.rbcon l'esempio precedente. -
Eseguire
kitchen converge, quindi effettuare l'accesso all'istanza per verificare che il file sia presente in/srv/www/sharedcon i contenuti corretti.
Al termine dell'operazione, eseguire kitchen destroy per chiudere l'istanza. La sezione successiva utilizza un nuovo libro di ricette.