Gibt es eine (einfache) Möglichkeit, dass Puppet eine im Internet verfügbare Datei für die Source-Eigenschaft einer Datei verwendet?
z.B:
file { "/home/text.txt":
source => [
"http://www.example.com/text.txt",
]
}
Gibt es eine (einfache) Möglichkeit, dass Puppet eine im Internet verfügbare Datei für die Source-Eigenschaft einer Datei verwendet?
z.B:
file { "/home/text.txt":
source => [
"http://www.example.com/text.txt",
]
}
Antworten:
Ich schreibe eine aktualisierte Antwort, um zukünftige Leser darüber zu informieren, dass die Dateiressource jetzt tatsächlich die HTTP-Quelle implementiert.
Aus den Dokumenten :
Quelle
Eine Quelldatei, die auf das lokale System kopiert wird. Dieses Attribut schließt sich mit Inhalt und Ziel gegenseitig aus. Zulässige Werte sind:
- Puppet: URIs, die auf Dateien in Modulen oder Puppet-Dateiserver-Mount-Punkte verweisen.
- Vollqualifizierte Pfade zu lokal verfügbaren Dateien (einschließlich Dateien auf NFS-Freigaben oder Windows-zugeordneten Laufwerken).
- Datei: URIs, die sich wie lokale Dateipfade verhalten.
- http: URIs, die auf Dateien verweisen, die von gängigen Webservern bereitgestellt werden
Sie können das Konstrukt also so verwenden, wie Sie es geschrieben haben:
file { "/home/text.txt":
source => "http://www.example.com/text.txt",
}
Es wurde als ein Merkmal angefordert jahrelang ... Aber Sie würden eine benutzerdefinierte Funktion für diese am Ende brauchen ... oder zu benutzen curl
oder wget
. Siehe Puppet Forge .
Was ist in text.txt?
Es ist momentan nicht sofort möglich:
Quelle:
...
Die verfügbaren URI-Schemata sind Marionette und Datei. Puppet-URIs rufen Dateien vom integrierten Dateiserver von Puppet ab
define
Am Ende habe ich im Internet gefunden:
define remote_file($remote_location=undef, $mode='0644'){
exec{ "retrieve_${title}":
command => "/usr/bin/wget -q ${remote_location} -O ${title}",
creates => $title,
}
file{$title:
mode => $mode,
require => Exec["retrieve_${title}"],
}
}
remote_file{'/home/text.txt':
remote_location => 'http://www.example.com/text.txt'
}