Arrays 在puppet中使用Hiera哈希时出现计算错误
我的hiera yaml文件中有以下值:Arrays 在puppet中使用Hiera哈希时出现计算错误,arrays,puppet,hiera,Arrays,Puppet,Hiera,我的hiera yaml文件中有以下值: test::config_php::php_modules : -'soap' -'mcrypt' -'pdo' -'mbstring' -'php-process' -'pecl-memcache' -'devel' -'php-gd' -'pear' -'mysql' -'xml' 下面是我的测试课: class test::config_php ( $php_version, $php_modules
test::config_php::php_modules :
-'soap'
-'mcrypt'
-'pdo'
-'mbstring'
-'php-process'
-'pecl-memcache'
-'devel'
-'php-gd'
-'pear'
-'mysql'
-'xml'
下面是我的测试课:
class test::config_php (
$php_version,
$php_modules = hiera_hash('php_modules', {}),
$module_name,
){
class { 'php':
version => $php_version,
}
$php_modules.each |String $php_module| {
php::module { $php_module: }
}
}
运行puppet清单时,出现以下错误:
Error: Evaluation Error: Error while evaluating a Function Call, create_resources(): second argument must be a hash at /tmp/vagrant-puppet/modules-f38a037289f9864906c44863800dbacf/ssh/manifests/init.pp:46:3 on node testdays-1a.vagrant.loc.vag
I am quite confused on what exactly am I doing wrong. My puppet version is 3.6.2 and I also have parser = future
我非常感谢您的帮助。看起来您的YAML有点问题
test::config_php::php_modules:
- soap
- mcrypt
- pdo
- mbstring
- php-process
- pecl-memcache
- devel
- php-gd
- pear
- mysql
- xml
将来,请尝试像这样查找YAML解析器:看起来您的YAML有点不正常
test::config_php::php_modules:
- soap
- mcrypt
- pdo
- mbstring
- php-process
- pecl-memcache
- devel
- php-gd
- pear
- mysql
- xml
将来,请尝试像这样查找YAML解析器:问题出在我的puppet版本上,3.6版在创建资源时行为怪异,例如,它在以下行失败:
create_resources('::ssh::client::config::user', $fin_users_client_options)
上面的代码片段是puppet实验室ssh模块的一部分,我认为它已经过全面测试,不应该成为异常的原因
进一步的分析表明,在配置文件中设置参数parser=future时引发了异常
如果不将future设置为解析器,我就无法使用each进行迭代,因此我决定如下更改我的源代码:
我创建了一个新类:
define test::install_modules {
php::module { $name: }
}
然后我将配置更改为:
class test::config_php (
$php_version,
$php_modules = [],
){
class { 'php':
version => $php_version,
}
install_modules { $php_modules: }
}
现在一切似乎都好多了。问题出在我的puppet版本上,3.6版在创建资源时表现得有些怪异,例如,它在下面一行失败了:
create_resources('::ssh::client::config::user', $fin_users_client_options)
上面的代码片段是puppet实验室ssh模块的一部分,我认为它已经过全面测试,不应该成为异常的原因
进一步的分析表明,在配置文件中设置参数parser=future时引发了异常
如果不将future设置为解析器,我就无法使用each进行迭代,因此我决定如下更改我的源代码:
我创建了一个新类:
define test::install_modules {
php::module { $name: }
}
然后我将配置更改为:
class test::config_php (
$php_version,
$php_modules = [],
){
class { 'php':
version => $php_version,
}
install_modules { $php_modules: }
}
现在一切似乎都好多了。非常感谢您的建议和链接,但即使在添加了更改Yaml之后,我似乎也遇到了同样的问题。似乎我没有正确阅读评估。您正在使用代码中未显示的create_resources函数。你能给我们看看这个吗?检查函数的第二个参数是否为散列。你可以从这里找到如何做到这一点,非常感谢你的建议和链接,但即使在添加了更改Yaml之后,我似乎也遇到了同样的问题。似乎我没有正确阅读评估。您正在使用代码中未显示的create_resources函数。你能给我们看看这个吗?检查函数的第二个参数是否为散列。你可以从这里找到如何做到这一点