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 denominatacreatefile
e aprirla. -
Aggiungere un file
metadata.rb
acreatefile
con 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
recipes
acreatefile
.
Il file da installare contiene i seguenti JSON dati.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }
Per configurare il file di dati
-
Aggiungere la sottodirectory
files
acreatefile
e la sottodirectorydefault
afiles
. Qualsiasi file installato concookbook_file
deve trovarsi in una sottodirectory difiles
, comefiles/default
in 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_file
copia l'appropriato file specifico per il sistema, se esistente, altrimenti utilizza il filedefault
. Per ulteriori informazioni, consulta cookbook_file. -
Create un file denominato
example_data.json
con il nome JSON dell'esempio precedente e aggiungetelo 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 destroy
per iniziare con un'istanza nuova. -
Creare un file
default.rb
che contiene la ricetta precedente e salvarlo inrecipes
. -
Eseguire
kitchen converge
, quindi accedere all'istanza per verificare che/srv/www/shared
contengaexample_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
createfile
del libro di ricettefiles
e il relativo contenuto. -
Aggiungere la sottodirectory
attributes
acreatefile
e aggiungere adefault.rb
il fileattributes
che 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
templates
al libro di ricettecreatefile
e la sottodirectorydefault
atemplates
.Nota
La directory
templates
funziona 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 risorsatemplate
usa l'appropriato modello specifico per il sistema, se esistente, altrimenti utilizza il modellodefault
. -
Creare un file denominato
example_data.json.erb
e salvarlo nella directorytemplates/default
. Il nome del modello è arbitrario, ma è in genere si crea aggiungendo.erb
al 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
source
specifica il modello utilizzato per creare il file. -
L'attributo
mode
specifica la modalità di installazione del file. -
La risorsa definisce due variabili:
a_boolean_var
ea_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_if
protezione indica alla risorsa di creare il file solo se['createfile']['install_file']
è impostato sutrue
.
Per eseguire la ricetta
-
Eseguire
kitchen destroy
per iniziare con un'istanza nuova. -
Sostituire il codice in
recipes/default.rb
con l'esempio precedente. -
Eseguire
kitchen converge
, quindi effettuare l'accesso all'istanza per verificare che il file sia presente in/srv/www/shared
con i contenuti corretti.
Al termine dell'operazione, eseguire kitchen destroy
per chiudere l'istanza. La sezione successiva utilizza un nuovo libro di ricette.