作用:自动配置客户端的hosts文件,解决网络内的计算机之间计算机名称解析问题,适用于没有部署DNS服务器的内网环境。
1、服务端配置puppet模块
(1)模块清单
[root@puppet~]#tree/etc/puppet/modules/host//etc/puppet/modules/host/├──files├──manifests│└──init.pp└──templates
(2)定义host主类
[root@puppet~]#vi/etc/puppet/modules/host/manifests/init.ppclasshost{host{'':#计算机名称ensure=>present,#基础属性,应用此资源host_aliases=>"puppet",#计算机别名,可以多个ip=>"10.188.1.73",#计算机IP地址}host{'':ensure=>present,host_aliases=>"zabbix",ip=>"10.188.1.103",}host{'':ensure=>present,host_aliases=>"centostest",ip=>"10.188.1.85",}host{'ywzhou-':ensure=>present,host_aliases=>"ywzhou-pc",ip=>"10.188.1.172",}}
说明:有多少条解析记录就写多少个host资源,需要注意的是计算机的IP必须固定,使用了DHCP服务的最好在DHCP服务器或路由器上进行保留或绑定;
或者手动设定IP,还可以通过puppet来管理客户端的主机名和IP。
(3)定义节点文件,调用模块
[root@puppet~]#vi/etc/puppet/manifests/centostest.ppnode""{includentp,yum,puppet,host}
(4)应用节点文件
[root@puppet~]#vi/etc/puppet/manifests/site.ppimport"centostest.pp"
2、测试
(1)客户端执行前查看hosts文件
[root@centostest~]#cat/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain610.188.1.10.188.1.
说明:这是安装客户端时手动设置的。
(2)客户端执行puppet agent -t后查看日志
[root@centostest~]#tailf/var/log/messagesNov1114:22:39centostestpuppet-agent[4]:(/Stage[main]/Host/Host[]/host_aliases)defined'host_aliases'as'zabbix'Nov1114:22:39centostestpuppet-agent[4]:(/Stage[main]/Host/Host[ywzhou-]/ensure)createdNov1114:22:39centostestpuppet-agent[4]:(/Stage[main]/Host/Host[]/ensure)createdNov1114:22:39centostestpuppet-agent[4]:(/Stage[main]/Host/Host[]/host_aliases)defined'host_aliases'as'puppet'Nov1114:22:40centostestpuppet-agent[4]:Finishedcatalogrunin1.13seconds
说明:对原有的记录进行修改,增加了别名记录,没有的就创建。
(3)客户端再次查看hosts文件
[root@centostest~]#cat/etc/hosts#HEADER:ThisfilewasautogeneratedatTueNov1114:22:39+0800#HEADER:bypuppet.Whileitcanstillbemanagedmanually,it#HEADER:isdefinitelynotrecommended.127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.localdomainlocalhost6localhost6.localdomain610.188.1.zabbix10.188.1.puppet10.188.1.172ywzhou-ywzhou-pc10.188.1.centostest
结论:可以看到对已有的条目添加了别名,没有的就新增了记录,这样就相当于建立了一个半自动的DNS;但是当计算机太多时最好还是搭建一个内网DNS服务器。
有新的记录就直接写在class host里,通过puppet发布到客户端,所有调用了host类的客户端就自动更新了。
3、host资源
host{'resourcetitle':name=>#主机名,可以写在标题中ensure=>#基本参数,present,absentcomment=>#注释说明host_aliases=>#别名ip=>#IP地址target=>#保住服务信息的文件,大部分系统默认是/etc/hosts}
如果觉得《Puppet模块(四):HOST模块及host资源》对你有帮助,请点赞、收藏,并留下你的观点哦!