Код с комментариями объявляет ресурс типа keystone_user
, а не класс. Предположительно его тип, keystone_user
, предоставляется модулем марионеточного трапеции. Семейство функций include()
предназначено для объявления классов, а не ресурсов, поэтому они неприменимы к keystone_user
.
Существует несколько способов, которыми вы могли бы продолжить. Если вы не ожидаете чего-то более сложного, чем объявление одного или нескольких keystone_user
s, я бы рекомендовал дать вашему классу параметр для имени пользователя, которому вы можете присвоить значение через Hiera:
class kilo2_keystone($usernames = []) {
include controller_ceph
include keystone
include keystone::config
keystone_user { $usernames:
ensure => present,
}
}
С другой стороны, если вы хотите, чтобы иметь возможность объявлять нескольких пользователей, каждый со своим набором атрибутов, то функция create_resources()
, вероятно, является наименьшим сопротивлением. Вы по-прежнему хотите параметризовать свой класс, чтобы он получал данные из Hiera через автоматическую привязку данных, но теперь вы хотите, чтобы данные были структурированы по-разному, как описано в документах create_resources()
: в качестве заголовков ресурсов хэш-отображения (имена пользователей в вашем случае) к внутренним хэшам параметров ресурсов к соответствующим значениям.
Например, ваш класс может выглядеть следующим образом:
class kilo2_keystone($userdata = {}) {
include controller_ceph
include keystone
include keystone::config
create_resources('keystone_user', $userdata)
}
Соответствующие данные для этого класса может выглядеть следующим образом:
kilo2_keystone::userdata:
glance:
ensure: present
enabled: true
another_user:
ensure: absent
Заметим также, что вы размещаете свой класс kilo2_keystone в верхняя область. Вы действительно должны поместить его в модуль и присвоить его пространству имен этого модуля. Последнее будет выглядеть так:
class mymodule::kilo2_keystone($userdata = {}) {
# ...
}
В этом модуле нет класса пользователя, так что вы пытаетесь сделать с помощью 'include keystone :: user'? Кроме того, если вы определяете ресурс в hiera, подобный этому, то вы хотите использовать что-то вроде 'create_resources' в поиске. Вы используете Hiera <= 3 или Поставщик данных кукол/Hiera4? –