首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >木偶:无法得到hiera变量

木偶:无法得到hiera变量
EN

Stack Overflow用户
提问于 2014-08-07 14:59:10
回答 1查看 3.7K关注 0票数 1

我已经使用hiera几个星期了,直到几天前我才开始收到这样的信息:

错误:无法从远程服务器检索目录:服务器上的错误400 :无法在任何Hiera数据文件中找到数据项nom,并且在节点d0pupeclient.victor-扣.com上没有提供默认的 警告:不在失败的目录上使用缓存 错误:无法检索目录;跳过运行

因此,我尝试做一个非常简单的测试,以检查问题是否来自我上一次的代码更改,而我仍然收到了这条消息。我再也找不到希拉变量了。下面是我所做的测试:

hiera.yaml:

代码语言:javascript
复制
---
:backends:
  - yaml

:yaml:
  :datadir: /etc/puppet/hieradata

:hierarchy:
  - common

site.pp:

代码语言:javascript
复制
# /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:

代码语言:javascript
复制
class test{

  $nom = hiera('nom')

file {"/root/test.txt":
    ensure   => file,
    source   => "/etc/puppet/test.txt.erb",
  }

}

test.txt.erb:

代码语言:javascript
复制
<%= nom %>

想办法解决这个问题吗?我认为这可能是一个文件访问权问题,所以我尝试授予对某些文件(755)的访问权限,但它不起作用.

EN

回答 1

Stack Overflow用户

发布于 2014-08-09 17:29:27

您需要在您的nom中定义common.yaml,以便它能够保存一个值。如果不打算设置默认值,则可以设置默认值并有条件地创建该文件。

代码语言:javascript
复制
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模板。

希望这能有所帮助。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25185772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档