puppet hiera array, loop and hash



我当前在hiera/puppet之间有一个问题:

在我的hiera中,我有:

mysql_user_mgmt:
     - mysql_user: 'toto@localhost'
       mysql_hash_password: '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29'
       mysql_grant_user: 'toto@localhost/*.*'
       mysql_user_table_privileges: '*.*'
     - mysql_user: 'test@localhost'
       mysql_hash_password: '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29'
       mysql_grant_user: 'test@localhost/*.*'
       mysql_user_table_privileges: '*.*'

在我的木偶中,我正在尝试制作一个循环以从Hiera获取数据:

$mysql_user_mgmt = hiera('mysql_user_mgmt',undef)
define mysql_loop () {
$mysql_hash_password = $name['mysql_hash_password']
notify { "mysql_hash_password: ${mysql_hash_password}": }
}
mysql_loop { $mysql_user_mgmt: }

但是我遇到了一些奇怪的错误。有人可以帮助我弄清楚如何制作循环吗?

资源标题是字符串。总是。

您正在尝试使用mysql_loop资源的标题将A hash 馈送到类型定义。那不起作用。哈希的串制版本最终将被使用,您以后通过哈希索引检索组件的尝试将失败,可能会出现某种类型的错误。

您有一些选择:

  1. 您可以重组定义和数据,并将汇总数据作为哈希参数传递。(下面的示例。)

  2. 您可以稍微重组定义和数据,并使用create_resources()函数。

  3. 如果您已升级到Puppet 4,或者您愿意在Puppet 3中启用未来的解析器,则可以使用新的(ISH)循环功能,例如each()

替代(1)的示例:

将数据重组为哈希的哈希,键入用户ID:

mysql_user_mgmt:
  'toto@localhost':
     mysql_hash_password: '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29'
     mysql_grant_user: 'toto@localhost/*.*'
     mysql_user_table_privileges: '*.*'
  'test@localhost':
     mysql_hash_password: '*94BDCEBE19083CE2A1F959FD02F964C7AF4CFC29'
     mysql_grant_user: 'test@localhost/*.*'
     mysql_user_table_privileges: '*.*'

修改定义:

define mysql_user ($all_user_info) {
  $mysql_hash_password = $all_user_info[$title]['mysql_hash_password']
  notify { "mysql_hash_password: ${mysql_hash_password}": }
}

像这样使用它:

$mysql_user_mgmt = hiera('mysql_user_mgmt',undef)
$mysql_user_ids = keys($mysql_user_mgmt)
mysql_user { $mysql_user_ids: all_user_info => $mysql_user_mgmt }

keys()功能可从PuppetLabs-STDLIB模块获得。)

相关内容

  • 没有找到相关文章

最新更新