我使用https://github.com/openstack/puppet-keystone来设置OpenStack管理/控制器节点。我需要将’glance’用户添加到keystone。我想尝试尽可能多地做我…
注释掉的代码声明了一个 资源 类型 keystone_user 而不是一个班级。大概是它的类型, keystone_user ,由puppet-keystone模块提供。该 include() 函数族用于声明类,而不是资源,因此它们不适用于 keystone_user 。
keystone_user
include()
您可以通过多种方式继续进行。如果你没有想到比声明一个或多个更复杂的东西 keystone_user 现在,然后我建议给你的类一个用户名参数,你可以通过Hiera为其分配一个值:
class kilo2_keystone($usernames = []) { include controller_ceph include keystone include keystone::config keystone_user { $usernames: ensure => present, } }
另一方面,如果您希望能够声明多个用户,每个用户拥有自己的一组属性,那么 create_resources() 功能可能是阻力最小的路径。您仍然希望参数化您的类,以便它通过自动数据绑定从Hiera获取数据,但现在您希望数据的结构不同,如 create_resources() docs:作为哈希映射资源标题(在你的情况下是用户名)到资源参数的内部哈希值到相应的值。
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 = {}) { # ... }