Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Beispiel 6: Erstellen von Dateien
Wichtig
Das Tool AWS OpsWorks Stacks Der Dienst hat am 26. Mai 2024 das Ende seiner Nutzungsdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren. Wenn Sie Fragen zur Migration haben, wenden Sie sich an AWS Support Team ein AWS Re:post oder
Nachdem Sie Verzeichnisse erstellt haben, müssen diese meist mit Konfigurationsdateien, Datendateien usw. gefüllt werden. In diesem Thema werden zwei Möglichkeiten vorgestellt, mit denen Sie Dateien auf einer Instance installieren können.
Themen
Installieren einer Datei mithilfe eines Rezeptbuchs
Die einfachste Möglichkeit zum Installieren einer Datei auf einer Instance bietet eine cookbook_file
/srv/www/shared
hinzuzufügen. Hier ist zu Referenzzwecken das ursprüngliche Rezept.
directory "/srv/www/shared" do mode 0755 owner 'root' group 'root' recursive true action :create end
So richten Sie das Rezeptbuch ein
-
Erstellen Sie ein Verzeichnis in
opsworks_cookbooks
namenscreatefile
und öffnen Sie es. -
Fügen Sie eine Datei
metadata.rb
zucreatefile
mit dem folgenden Inhalt hinzu:name "createfile" version "0.1.0"
-
Initialisieren und konfigurieren Sie Test Kitchen wie unter Beispiel 1: Installieren von Paketen beschrieben und entfernen Sie CentOS aus der Liste
platforms
. -
Fügen Sie ein Unterverzeichnis
recipes
zucreatefile
hinzu.
Die zu installierende Datei enthält die folgenden JSON Daten.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true }
So richten Sie die Datendatei ein
-
Fügen Sie ein Unterverzeichnis
files
zucreatefile
und ein Unterverzeichnisdefault
zufiles
hinzu. Alle Dateien, die Sie mitcookbook_file
installieren, müssen in einem Unterverzeichnis vonfiles
sein – in diesem Beispiel infiles/default
.Anmerkung
Falls Sie unterschiedliche Dateien für verschiedene Systeme angeben möchten, können Sie die einzelnen systemspezifischen Dateien in einem Unterordner platzieren, der nach dem jeweiligen System benannt ist (z. B.
files/ubuntu
). Von dercookbook_file
-Ressource wird dann die geeignete systemspezifische Datei kopiert, sofern vorhanden. Andernfalls wird die Dateidefault
verwendet. Weitere Informationen finden Sie unter cookbook_file. -
Erstellen Sie eine Datei
example_data.json
mit dem Namen JSON aus dem vorherigen Beispiel und fügen Sie sie hinzufiles/default
.
Mit folgendem Rezept wird example_data.json
an einen angegebenen Speicherort kopiert.
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
Nachdem von der Verzeichnisressource das Verzeichnis /srv/www/shared
erstellt wurde, kopiert die Ressource cookbook_file
die Datei example_data.json
in das Verzeichnis und legt zudem den Benutzer, die Gruppe und den Modus für die Datei fest.
Anmerkung
Mit der cookbook_file
-Ressource wird eine neue Aktion eingeführt: create_if_missing
. Sie könnten auch eine create
-Aktion verwenden, aber diese würde eine vorhandene Datei überschreiben. Falls nichts überschrieben werden soll, verwenden Sie create_if_missing
. Damit wird die Datei example_data.json
nur installiert, wenn sie nicht bereits vorhanden ist.
So führen Sie das Rezept aus
-
Führen Sie
kitchen destroy
aus, damit Sie mit einer neuen Instance beginnen können. -
Erstellen Sie die Datei
default.rb
, die das vorherige Rezept enthält, und speichern Sie diese inrecipes
. -
Führen Sie
kitchen converge
aus und melden Sie sich anschließend an der Instance an, um zu prüfen, ob die Datei/srv/www/shared
inexample_data.json
vorhanden ist.
Erstellen einer Datei mithilfe einer Vorlage
Die cookbook_file
-Ressource ist für einige Zwecke sehr gut geeignet, jedoch werden von ihr alle im Rezeptbuch vorhandenen Dateien installiert. Eine template
Im Beispiel wird das Rezeptbuch createfile
so angepasst, dass mit einer template
-Ressource eine leicht abgewandelte Version von example_data.json
installiert wird.
So sieht die installierte Datei aus.
{ "my_name" : "myname", "your_name" : "yourname", "a_number" : 42, "a_boolean" : true, "a_string" : "some string", "platform" : "ubuntu" }
"template"-Ressourcen werden in der Regel in Verbindung mit Attributdateien verwendet, daher wird auch in diesem Beispiel eine zur Definition der folgenden Werte genutzt.
default['createfile']['my_name'] = 'myname' default['createfile']['your_name'] = 'yourname' default['createfile']['install_file'] = true
So richten Sie das Rezeptbuch ein
-
Löschen Sie das Verzeichnis
createfile
und dessen Inhalte aus dem Rezeptbuchfiles
. -
Fügen Sie das Unterverzeichnis
attributes
zucreatefile
hinzu. Fügen Sie außerdem die Dateidefault.rb
mit den vorherigen Attributdefinitionen zuattributes
hinzu.
Bei einer Vorlage handelt es sich um eine .erb
-Datei, die im Grunde genommen eine Kopie der letzten Datei ist, in der einige Inhalte durch Platzhalter dargestellt werden. Bei der Dateierstellung mithilfe der template
-Ressource werden die Vorlageninhalte in die angegebene Datei kopiert und die Platzhalter mit den zugewiesenen Werten überschrieben. Hier ist die Vorlage für 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'] %>" }
Die Werte <%=...%>
sind die Platzhalter.
-
<%=node[...]%>
stellt den Wert eines Knotenattributs dar.In diesem Beispiel ist der Wert "your_name" ein Platzhalter für einen Attributwert aus der Attributdatei des Rezeptbuchs.
-
<%=@...%>
stellt den Wert einer Variable dar, die in der "template"-Ressource definiert ist (wird später erläutert).
So erstellen Sie die Vorlagendatei
-
Fügen Sie ein Unterverzeichnis
templates
zu dem Rezeptbuchcreatefile
und ein Unterverzeichnisdefault
zutemplates
hinzu.Anmerkung
Das Verzeichnis
templates
funktioniert auf die gleiche Weise wie das Verzeichnisfiles
. Sie können systemspezifische Vorlagen in einem Unterverzeichnis, das z. B. wieubuntu
nach dem jeweiligen System benannt ist, speichern. Von dertemplate
-Ressource wird dann die geeignete systemspezifische Datei genutzt, sofern vorhanden. Andernfalls wird die Vorlagedefault
verwendet. -
Erstellen Sie eine Datei namens
example_data.json.erb
und legen Sie sie in das Verzeichnistemplates/default
. Der Vorlagenname ist beliebig wählbar, wird aber durch die Dateinamenerweiterung.erb
(einschließlich anderer Erweiterungen) gekennzeichnet.
Das folgende Rezept verwendet eine template
-Ressource, um /srv/www/shared/example_data.json
zu erstellen.
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
Von der template
-Ressource wird mithilfe einer Vorlage die Datei example_data.json
erstellt und in /srv/www/shared
installiert.
-
Der Vorlagenname
/srv/www/shared/example_data.json
gibt den Pfad und den Namen der installierten Datei an. -
Das
source
-Attribut gibt die Vorlage an, mit der die Datei erstellt wurde. -
Das
mode
-Attribut gibt den Modus der installierten Datei an. -
Die Ressource definiert die beiden Variablen
a_boolean_var
unda_string_var
.Wenn die Datei
example_data.json
von der Ressource erstellt wird, werden die Variablenplatzhalter in der Vorlage mit den entsprechenden Werten aus der Ressource überschrieben. -
Mit dem
only_if
-Wächterattribut wird die Ressource angewiesen, die Datei nur zu erstellen, sofern['createfile']['install_file']
auf den Werttrue
gesetzt ist.
So führen Sie das Rezept aus
-
Führen Sie
kitchen destroy
aus, damit Sie mit einer neuen Instance beginnen können. -
Ersetzen Sie den Code in
recipes/default.rb
durch das vorherige Beispiel. -
Führen Sie
kitchen converge
aus und melden Sie sich anschließend an der Instance an, um zu prüfen, ob die Datei in/srv/www/shared
mit dem korrekten Inhalt vorhanden ist.
Wenn Sie fertig sind, führen Sie kitchen destroy
aus und fahren damit die Instance herunter. Im nächsten Abschnitt wird ein neues Rezeptbuch verwendet.