天天看點

Puppet子產品(四):HOST子產品及host資源

作用:自動配置用戶端的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.pp
class host {
  host { 'puppet.ewin.com':      #計算機名稱
  ensure       => present,       #基礎屬性,應用此資源
  host_aliases => "puppet",      #計算機别名,可以多個
  ip           => "10.188.1.73", #計算機IP位址
  }
  host { 'zabbix.ewin.com':
  ensure       => present,
  host_aliases => "zabbix",
  ip           => "10.188.1.103",
  }
  host { 'centostest.ewin.com':
  ensure       => present,
  host_aliases => "centostest",
  ip           => "10.188.1.85",
  }
  host { 'ywzhou-pc.ewin.com':
  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.pp
node "centostest.ewin.com" {
  include ntp, yum, puppet, host
}      

(4)應用節點檔案  

[root@puppet ~]# vi /etc/puppet/manifests/site.pp
import "centostest.pp"      

2、測試

(1)用戶端執行前檢視hosts檔案

[root@centostest ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.188.1.103 zabbix.ewin.com
10.188.1.73 puppet.ewin.com      

    說明:這是安裝用戶端時手動設定的。

(2)用戶端執行puppet agent -t後檢視日志

[root@centostest ~]# tailf /var/log/messages 
Nov 11 14:22:39 centostest puppet-agent[20214]: (/Stage[main]/Host/Host[zabbix.ewin.com]/host_aliases) defined 'host_aliases' as 'zabbix'
Nov 11 14:22:39 centostest puppet-agent[20214]: (/Stage[main]/Host/Host[ywzhou-pc.ewin.com]/ensure) created
Nov 11 14:22:39 centostest puppet-agent[20214]: (/Stage[main]/Host/Host[centostest.ewin.com]/ensure) created
Nov 11 14:22:39 centostest puppet-agent[20214]: (/Stage[main]/Host/Host[puppet.ewin.com]/host_aliases) defined 'host_aliases' as 'puppet'
Nov 11 14:22:40 centostest puppet-agent[20214]: Finished catalog run in 1.13 seconds      

    說明:對原有的記錄進行修改,增加了别名記錄,沒有的就建立。

(3)用戶端再次檢視hosts檔案

[root@centostest ~]# cat /etc/hosts
# HEADER: This file was autogenerated at Tue Nov 11 14:22:39 +0800 2014
# HEADER: by puppet.  While it can still be managed manually, it
# HEADER: is definitely not recommended.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.188.1.103  zabbix.ewin.com zabbix
10.188.1.73 puppet.ewin.com puppet
10.188.1.172  ywzhou-pc.ewin.com  ywzhou-pc
10.188.1.85 centostest.ewin.com centostest      

    結論:可以看到對已有的條目添加了别名,沒有的就新增了記錄,這樣就相當于建立了一個半自動的DNS;但是當計算機太多時最好還是搭建一個内網DNS伺服器。

    有新的記錄就直接寫在class host裡,通過puppet釋出到用戶端,所有調用了host類的用戶端就自動更新了。

host { 'resource title':
  name         => #主機名,可以寫在标題中
  ensure       => #基本參數,present, absent
  comment      => #注釋說明
  host_aliases => #别名
  ip           => #IP位址
  target       => #保住服務資訊的檔案,大部分系統預設是/etc/hosts
}      

繼續閱讀