使用hiera设置类参数



我正试图弄清楚如何使用hiera来设置类参数的值。我用两个简单的类来测试:testhiera和testhiera2

以下是这些类别:

[root@puppet-el7-001 modules]# cat testhiera/manifests/init.pp 
class testhiera (
        $haproxy_cert_content = 'unknown' ,
) {
        notify {"cert is $haproxy_cert_content":}
}
[root@-puppet-el7-001 modules]# cat testhiera2/manifests/init.pp 
class testhiera2 (
        $haproxy_cert_content = 'unknown' ,
) {
        notify {"number two cert is $haproxy_cert_content":}
}

这是我的/etc/puppletlabs/pupput/hiera.yaml文件

---
:backends:
  - yaml
:hierarchy:
  - defaults
  - "%{clientcert}"
  - "%{environment}"
  - global
:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /var/lib/hiera on *nix
# - %CommonAppData%PuppetLabshieravar on Windows
# When specifying a datadir, make sure the directory exists.
  :datadir: /root/puppetmaster/hiera/ost-el7

我有这个文件/root/putymaster/hiera/ost-el7/defaults.yaml

一个附带问题:我必须将文件命名为"defaults.yaml"吗?如何使用其他文件名

---
testhiera::haproxy_cert_content: "n
-----BEGIN CERTIFICATE-----n
blah blah blhan
-----END RSA PRIVATE KEY-----n
blah blah blhan
-----BEGIN CERTIFICATE-----n
blah blah blhan
-----END CERTIFICATE-----n
"

当我像这样执行我的木偶类。。。

# puppet apply -e 'include testhiera'

我得到了预期的输出:

Notice: Compiled catalog for puppet-el7-001.cisco.com in environment production in 0.08 seconds
Notice: cert is 
 -----BEGIN CERTIFICATE-----
 blah blah blha
 -----END RSA PRIVATE KEY-----
 blah blah blha
 -----BEGIN CERTIFICATE-----
 blah blah blha
 -----END CERTIFICATE-----
Notice: /Stage[main]/Testhiera/Notify[cert is 
 -----BEGIN CERTIFICATE-----
 blah blah blha
 -----END RSA PRIVATE KEY-----
 blah blah blha
 -----BEGIN CERTIFICATE-----
 blah blah blha
 -----END CERTIFICATE-----
 ]/message: defined 'message' as 'cert is 
 -----BEGIN CERTIFICATE-----
 blah blah blha
 -----END RSA PRIVATE KEY-----
 blah blah blha
 -----BEGIN CERTIFICATE-----
 blah blah blha
 -----END CERTIFICATE-----
 '
Notice: Finished catalog run in 0.17 seconds

我的问题是,将propoxy_cert_content数据获取到testhiera2类?我必须将defaults.yaml文件更改为这样吗。。。

---
testhiera::haproxy_cert_content: "n
-----BEGIN CERTIFICATE-----n
blah blah blhan
-----END RSA PRIVATE KEY-----n
blah blah blhan
-----BEGIN CERTIFICATE-----n
blah blah blhan
-----END CERTIFICATE-----n
"
testhiera2::haproxy_cert_content: "n
-----BEGIN CERTIFICATE-----n
blah blah blhan
-----END RSA PRIVATE KEY-----n
blah blah blhan
-----BEGIN CERTIFICATE-----n
blah blah blhan
-----END CERTIFICATE-----n
"

基本上只是剪切-n-投射行并将testhiera更改为testhiera2?

我希望有人能给我一个更好的方法。

感谢

在Hiera中,您可以通过使用Hiera查找函数来重用已经定义的变量。在您的示例中,它将是:

testhiera2::haproxy_cert_content:"%{hiera('testhiera::haproxy_cert_content')}"

对于次要问题:Hiera将按照hiera.yaml中提供的相同顺序在文件中查找变量。(阅读有关层次结构的内容)因此,在您的配置中,首先它将检查文件defaults.yaml。如果在那里找不到定义的变量,它将尝试计算变量clientcert,并在文件value_of_clientcert.yaml中查找,然后在文件value_of_environment.yaml中查找,最后在global.yaml中查找。

您不必将文件命名为defaults.yaml。根据上面的描述,所有与层次结构配置匹配的东西都会很好。

*顺便说一句,如果您在层次结构中使用事实,请将::放在变量名称之前,因此%{::facter_fact}

相关内容

  • 没有找到相关文章

最新更新