在木偶中使用 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 = hiera_hash('php_modules', {}),
$module_name,
){
class { 'php':
version => $php_version,
}
$php_modules.each |String $php_module| {
php::module { $php_module: }
}
}

运行我的木偶清单时,出现以下错误:

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 略有偏差。

  1. 在 YAML 中,您实际上并不需要引号。
  2. 您的缩进是两个而不是一个。
  3. 您第一次的第一个冒号是间隔的。这将引发语法错误。

它应该看起来更像这样:

test::config_php::php_modules:
 - soap
 - mcrypt
 - pdo
 - mbstring
 - php-process
 - pecl-memcache
 - devel
 - php-gd
 - pear
 - mysql
 - xml

将来尝试查找像这样的 YAML 解析器:链接

问题出在我的木偶版本上,不知何故,3.6 版在创建资源时表现得很奇怪,例如它在以下行失败:

create_resources('::ssh::client::config::user', $fin_users_client_options)

上面的代码片段是来自 puppet 实验室的 ssh 模块的一部分,我认为它已经过彻底的测试,不应该成为异常的原因。

进一步的分析导致这样一个事实,即在配置文件中设置参数解析器 = future 时会引发异常

如果不将 future 设置为解析器,我就无法使用每个进行迭代,因此我决定更改我的源代码如下:

我创建了一个新类:

define test::install_modules {
php::module { $name: }
}

然后我将配置config_php更改为:

class test::config_php (
$php_version,
$php_modules = [],
){
class { 'php':
version => $php_version,
}
install_modules { $php_modules: }
}

现在一切似乎都好多了。

相关内容

  • 没有找到相关文章

最新更新