jane27 发表于 2018-8-2 10:48:22

【跟我学Puppet】1.5 Puppet 3.7 使用Hiera定义配置

#顶层配置  
:hierarchy
  
#必须是一个字符串或数组,每一个名字都代表一个静态或动态数据源
  
#动态数据是一个简单的 %{variable} 内插变量
  
#在层次结构中,按顺序检查,自上而下.
  
#默认值是common
  

  
:backend
  
#必须是一个字符串或数组,每一个名字都代表一个可用的Hiera的backend
  
#内置的backend是yaml和json,可以添加额外的backend作为附加的
  
#默认值是yaml
  

  
#backend设置
  
:yaml and :json
  
:datadir
  
#可以在目录中找到数据源的文件,必须是一个字符串
  
#可以在路径中使用变量内插/etc/puppet/hieradata/%{::environment}
  
#默认值 /var/lib/hiera
  

  

  

  
#配置hiera.yaml
  
mkdir /etc/puppet/hieradata/
  
cat > /etc/puppet/hiera.yaml <<EOF
  
---
  
:backends:
  
- yaml
  
:yaml:
  
:datadir: /etc/puppet/hieradata
  
:logger: console
  
:hierarchy:
  
- "%{operatingsystem}%{::operatingsystemmajrelease}"
  
- "%{::osfamily}"
  
- common
  
EOF
  

  
#创建默认会被匹配的数据文件..,使用classes引入base模块
  
cat > /etc/puppet/hieradata/common.yaml <<EOF
  
---
  
classes:
  
- base
  
EOF
  

  
#创建当osfamily被匹配为RedHat时的文件...
  
cat > /etc/puppet/hieradata/RedHat.yaml <<EOF
  
---
  
os: redhat
  
EOF
  

  
#创建当operatingsystem和operatingsystemmajrelease被匹配时的文件..
  
cat > /etc/puppet/hieradata/CentOS6.yaml <<EOF
  
---
  
os: CentOS
  
os_type:
  
Linux: true
  
unix: false
  
EOF
  

  
#配置site.pp自动导入类模块...
  
cat > /etc/puppet/manifests/site.pp <<EOF
  
hiera_include('classes')
  
EOF
  

  
#创建一个base模块,打印出os变量
  
#对于查找数据可以使用三种函数
  
#标准查询hiera 获取一个匹配key的value
  
#合并查询hiera_array获取所有匹配的键,然后返回它们的值到一个数组中
  
#合并查询hiera_hash 类似数组,返回hash的结构.
  
mkdir /etc/puppet/modules/base/manifests
  
cat > /etc/puppet/modules/base/manifests/init.pp <<EOF
  
class base {
  
$test1 = hiera('os')
  
$test2 = hiera_array('os')
  
$test3 = hiera_hash('os_type')
  
notify { "OS1: $test1":}
  
notify { "OS2: $test2":}
  
}
  
EOF
  

  
#重启Puppet Master
页: [1]
查看完整版本: 【跟我学Puppet】1.5 Puppet 3.7 使用Hiera定义配置