Der auskommentierte Code deklariert eine Ressource vom Typ keystone_user
, keine Klasse. Vermutlich wird sein Typ keystone_user
durch das Puppet-Keystone-Modul bereitgestellt. Die include()
Familie von Funktionen sind zum Deklarieren von Klassen, nicht Ressourcen, so dass sie auf keystone_user
nicht anwendbar sind.
Es gibt mehrere Möglichkeiten, wie Sie vorgehen könnten. Wenn Sie nicht erwarten, etwas komplizierter zu haben als einen oder mehrere keystone_user
s zu deklarieren, dann empfehle ich, Ihrer Klasse einen Parameter für die Benutzernamen zu geben, denen Sie über Hiera einen Wert zuweisen können:
class kilo2_keystone($usernames = []) {
include controller_ceph
include keystone
include keystone::config
keystone_user { $usernames:
ensure => present,
}
}
Wenn Sie andererseits in der Lage sein möchten, mehrere Benutzer mit jeweils eigenen Attributen zu deklarieren, ist die create_resources()
-Funktion wahrscheinlich der Pfad des geringsten Widerstands. Sie möchten dennoch Ihre Klasse so parametrisieren, dass sie die Daten von Hiera über eine automatisierte Datenbindung erhält, aber nun möchten Sie, dass die Daten anders strukturiert sind, wie in der Dokumentation create_resources()
beschrieben: als Hash-Mapping Ressourcentitel (in Ihrem Fall Benutzernamen)) zu inneren Hashes von Ressourcenparametern zu entsprechenden Werten.
Zum Beispiel könnte Ihre Klasse wie folgt aussehen:
class kilo2_keystone($userdata = {}) {
include controller_ceph
include keystone
include keystone::config
create_resources('keystone_user', $userdata)
}
Die entsprechenden Daten für diese Klasse könnte wie folgt aussehen:
kilo2_keystone::userdata:
glance:
ensure: present
enabled: true
another_user:
ensure: absent
Beachten Sie auch, dass Sie Ihre kilo2_keystone Klasse platzieren in der Top-Umfang. Sie sollten es wirklich in ein Modul einfügen und es dem Namensraum dieses Moduls zuweisen. Letzteres würde wie folgt aussehen:
Es scheint keine Benutzerklasse in diesem Modul zu sein, also was versuchst du mit 'include keystone :: user' zu tun? Wenn Sie eine Ressource in dieser Art definieren, dann möchten Sie etwas wie 'create_resources' in der Suche verwenden. Verwenden Sie Hiera <= 3 oder den Puppet Data Provider/Hiera4? –