sudo puppet resource package hiera ensure=installed
也可以采用在线安装的方式
apt-
get
install hiera-puppet
[root@puppetmaster ~]# mv /etc/hiera.yaml /etc/puppet/
[root@puppetmaster ~]# ln -s /etc/puppet/hiera.yaml /etc/hiera.yaml
[root@puppetmaster ~]# ll /etc/hiera.yaml
lrwxrwxrwx 1root root 22Apr
2020
:
05
/etc/hiera.yaml -> /etc/puppet/hiera.yaml
-
添加全局变量common,注释掉defaults、global和clientcert。
-
添加系统类型变量osfamily
-
添加主机名变量hostname
备注: 以上变量其实就是fact变量。
root@crdc-c210-170:/etc/puppet# cat hiera.yaml
---
:backends:
- yaml
:hierarchy:
# - defaults
# - "%{clientcert}"
# - "%{environment}"
# - global
- common
- "%{environment}"
- "%{osfamily}"
- "%{hostname}"
:yaml:
# datadir is empty here, so hiera uses its defaults:
# - /var/lib/hiera on *nix
# - %CommonAppData%\PuppetLabs\hiera\var on Windows
# When specifying a datadir, make sure the directory exists.
# :datadir:"/etc/puppet/environments/%{environment}/hiera"
:datadir: /etc/puppet/hieradatadir
hiera的主配置文件必须为yaml格式,配置最上层key必须以冒号(:)开头
backends 定义了hiera数据文件的格式,支持yaml和json两种格式
hierarchy(层次结构)为数据源的层次顺序,即hiera查找的顺序,先从common中查找,如果没有则再往下,依次查找。
hierarchy中的值必须为字符串,其中common为默认数据源。
hiera主配置文件编写完成之后,需要重启puppetmaster后方可生效。
举例说明如下:
变量
::clientcert
=web01.example.com
::environment
=production
::is_virtual
=true
数据源解读顺序如下:
查找到的yaml文件如下:
- web01.example.com.yaml