Puppet:无法获取hiera变量



我已经使用hiera几个星期了,一切都很好,直到几天前我开始收到那种消息:

错误:无法从远程服务器检索目录:服务器上的错误400:无法在任何Hiera数据文件中找到数据项名称,并且节点d0puppetclient.victorbuck.com上没有提供默认值

警告:没有在失败的目录上使用缓存

错误:无法检索目录;跳过运行

所以我试着做一个非常简单的测试来检查问题是否来自我最后的代码更改,我仍然得到这个消息。我不能再得到变量了。下面是我所做的测试:

hiera.yaml:

---
:backends:
  - yaml
:yaml:
  :datadir: /etc/puppet/hieradata
:hierarchy:
  - common

site.pp:

# /etc/puppet/manifests/site.pp
case $operatingsystem {
  'Solaris': { include role::solaris }
  'RedHat', 'CentOS': { include redhat::roles::common }
  /^(Debian|Ubuntu)$/: { include role::debian }
#  default: { include role::generic }
}
case $hostname {
  /^d0puppetclient/: { include test }
}

test.pp:

class test{
  $nom = hiera('nom')
file {"/root/test.txt":
    ensure   => file,
    source   => "/etc/puppet/test.txt.erb",
  }
}

test.txt.erb:

<%= nom %>

有什么办法解决这个问题吗?我认为这可能是一个文件访问权的问题,所以我试图授予访问一些文件(755),它不工作…

您需要在common中定义nom。以使其保存值。如果你不打算设置它,你可以设置一个默认值并有条件地创建文件。

class test {
  $nom = hiera('nom', false)
  if $nom {
    file { '/root/test.txt':
      ensure => file,
      content => template('test/test.txt.erb')
    }
  }
}

注意我是如何使用content而不是source的。当使用erb模板时,需要使用template()函数指定content

使用模板

如果你使用source,它期望一个文件而不是erb模板。

相关内容

  • 没有找到相关文章

最新更新