轉載: http://blog.51cto.com/ywzhou/1577356
作用:通過puppet子產品自動控制用戶端的puppet配置,當需要修改用戶端的puppet配置時不用在用戶端一一設定。
1、服務端配置puppet子產品
(1)子產品清單
[root@puppet ~]# tree /etc/puppet/modules/puppet/
/etc/puppet/modules/puppet/
├── files
├── manifests
│ ├── config.pp
│ ├── init.pp
│ ├── install.pp
│ ├── params.pp
│ └── service.pp
└── templates
└── puppet.conf.erb
(2)定義參數類
[root@puppet ~]# vi /etc/puppet/modules/puppet/manifests/params.pp
class puppet::params {
$puppetserver = "puppet.ewin.com"
case $operatingsystemmajrelease{
5: { #定義centos5系列的參數
$puppet_release = '3.7.1-1.el5'
$facter_release = '2.2.0-1.el5'
}
6: { #定義centos6系列的參數
$puppet_release = '3.7.1-1.el6' #定義軟體版本
$facter_release = '2.2.0-1.el6' #定義軟體版本
}
default: {
fail("Module puppet is not supported on ${::operatingsystem}")
}
}
}
(3)定義安裝類
[root@puppet ~]# vi /etc/puppet/modules/puppet/manifests/install.pp
class puppet::install {
package { "puppet":
ensure => $puppet::params::puppet_release,
}
package { "facter":
ensure => $puppet::params::facter_release,
}
}
說明:根據系統版本(centos5或centos6)來安裝指定版本的puppet和facter
(4)定義配置類
[root@puppet ~]# vi /etc/puppet/modules/puppet/manifests/config.pp
class puppet::config {
file { "/etc/puppet/puppet.conf":
ensure => present,
content => template("puppet/puppet.conf.erb"), #檔案内容來源于模闆
owner => "root",
group => "root",
mode => '0644',
require => Class["puppet::install"], #要求先完成install.pp
notify => Class["puppet::service"], #通知并觸發service.pp
}
}
說明:将配置模闆傳送到用戶端的puppet.conf,設定使用者、組、權限
(5)定義配置模闆
[root@puppet ~]# vi /etc/puppet/modules/puppet/template/puppet.conf.erb
### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = <%= scope.lookupvar('puppet::params::puppetserver') %> #參數調用格式<%= 參數 %>
report = true
pluginsync = false
runinterval = 10 #puppet 用戶端預設連接配接到puppetmaster的時間間隔,預設30分鐘,這裡測試設為10秒,将會生成大量報告,建議測試完後改回1800
說明:模闆調用了params.pp中的參數$puppetserver
(6)定義服務類
[root@puppet ~]# vi /etc/puppet/modules/puppet/manifests/service.pp
class puppet::service {
service { "puppet":
ensure => running, #確定服務puppet處于運作狀态
hasstatus => true, #是否支援service puppet status指令檢視狀态
hasrestart => true, #是否支援service puppet restart指令重新開機服務
enable => true, #是否開機啟動服務
require => Class["puppet::install"],
}
}
(7)定義puppet主類
[root@puppet ~]# vi /etc/puppet/modules/puppet/manifests/init.pp
class puppet {
include puppet::params,puppet::install,puppet::config,puppet::service
}
(8)定義節點檔案,調用子產品
[root@puppet ~]# vi /etc/puppet/manifests/centostest.pp
node "centostest.ewin.com" {
include ntp, yum, puppet
}
(9)應用節點檔案
[root@puppet ~]# vi /etc/puppet/manifests/site.pp
import "centostest.pp"
2、測試:軟體安裝版本、配置檔案、服務啟動
(1)檢視已安裝版本
[root@centostest ~]# facter | grep operatingsystemmajrelease
operatingsystemmajrelease => 6
[root@centostest ~]# rpm -aq|grep puppet
puppet-3.7.3-1.el6.noarch
[root@centostest ~]# rpm -aq|grep facter
facter-2.3.0-1.el6.x86_64
(2)檢視服務狀态
[root@centostest ~]# /etc/init.d/puppet stop
Stopping puppet agent: [确定]
[root@centostest ~]# /etc/init.d/puppet status
puppet 已停
[root@centostest ~]# chkconfig --list | grep puppet
puppet 0:關閉 1:關閉 2:關閉 3:關閉 4:關閉 5:關閉 6:關閉
(3)檢視配置檔案
[root@centostest ~]# cat /etc/puppet/puppet.conf
[main]
# The Puppet log directory.
# The default value is '$vardir/log'.
logdir = /var/log/puppet
# Where Puppet PID files are kept.
# The default value is '$vardir/run'.
rundir = /var/run/puppet
# Where SSL certificates are kept.
# The default value is '$confdir/ssl'.
ssldir = $vardir/ssl
[agent]
# The file in which puppetd stores a list of the classes
# associated with the retrieved configuratiion. Can be loaded in
# the separate ``puppet`` executable using the ``--loadclasses``
# option.
# The default value is '$confdir/classes.txt'.
classfile = $vardir/classes.txt
# Where puppetd caches the local configuration. An
# extension indicating the cache format is added automatically.
# The default value is '$confdir/localconfig'.
localconfig = $vardir/localconfig
(4)用戶端執行測試
[root@centostest ~]# puppet agent --server puppet.ewin.com --test --noop
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for centostest.ewin.com
Info: Applying configuration version '1415246721'
Notice: /Stage[main]/Puppet::Install/Package[facter]/ensure: current_value 2.3.0-1.el6, should be 2.2.0-1.el6 (noop) #說明:版本将變成2.2.0-1.el6
Notice: /Stage[main]/Puppet::Install/Package[puppet]/ensure: current_value 3.7.3-1.el6, should be 3.7.1-1.el6 (noop) #說明:版本将變成3.7.1-1.el6
Notice: Class[Puppet::Install]: Would have triggered 'refresh' from 2 events
Notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content: #說明:生成puppet.conf配置檔案内容
--- /etc/puppet/puppet.conf 2014-11-04 06:23:12.000000000 +0800
+++ /tmp/puppet-file20141106-34117-1abwj46-0 2014-11-06 12:04:04.724000002 +0800
@@ -1,25 +1,12 @@
-[main]
- # The Puppet log directory.
- # The default value is '$vardir/log'.
- logdir = /var/log/puppet
-
- # Where Puppet PID files are kept.
- # The default value is '$vardir/run'.
- rundir = /var/run/puppet
-
- # Where SSL certificates are kept.
- # The default value is '$confdir/ssl'.
- ssldir = $vardir/ssl
-
-[agent]
- # The file in which puppetd stores a list of the classes
- # associated with the retrieved configuratiion. Can be loaded in
- # the separate ``puppet`` executable using the ``--loadclasses``
- # option.
- # The default value is '$confdir/classes.txt'.
- classfile = $vardir/classes.txt
-
- # Where puppetd caches the local configuration. An
- # extension indicating the cache format is added automatically.
- # The default value is '$confdir/localconfig'.
- localconfig = $vardir/localconfig
+### config by puppet ###
+[main]
+ logdir = /var/log/puppet
+ rundir = /var/run/puppet
+ ssldir = $vardir/ssl
+[agent]
+ classfile = $vardir/classes.txt
+ localconfig = $vardir/localconfig
+ server = puppet.ewin.com
+ report = true
+ pluginsync = false
+ runinterval = 10
\ No newline at end of file
#說明:每行前的-表示删除行,+表示添加行
Notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content: current_value {md5}58e2f9765e2994db8e8ab19a3513356e, should be {md5}fa6ae34360e0b6b7755165fc8e950a76 (noop)
Info: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Scheduling refresh of Class[Puppet::Service] #說明:配置檔案的改變将觸發service.pp
Notice: Class[Puppet::Service]: Would have triggered 'refresh' from 1 events
Info: Class[Puppet::Service]: Scheduling refresh of Service[puppet]
Notice: Class[Puppet::Config]: Would have triggered 'refresh' from 1 events
Notice: /Stage[main]/Puppet::Service/Service[puppet]/ensure: current_value stopped, should be running (noop) #說明:服務目前是關閉的,将變成運作
Info: /Stage[main]/Puppet::Service/Service[puppet]: Unscheduling refresh on Service[puppet]
Notice: Class[Puppet::Service]: Would have triggered 'refresh' from 1 events
Notice: Stage[main]: Would have triggered 'refresh' from 3 events
Notice: Finished catalog run in 0.70 seconds
(5)真正執行puppet agent(不帶--noop參數)
[root@centostest ~]# puppet agent --server puppet.ewin.com --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for centostest.ewin.com
Info: Applying configuration version '1415247249'
Notice: /Stage[main]/Puppet::Install/Package[facter]/ensure: ensure changed '2.3.0-1.el6' to '2.2.0-1.el6'
Error: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: [Errno 256] No more mirrors to try.
Wrapped exception:
Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: [Errno 256] No more mirrors to try.
Error: /Stage[main]/Puppet::Install/Package[puppet]/ensure: change from 3.7.3-1.el6 to 3.7.1-1.el6 failed: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: [Errno 256] No more mirrors to try.
Notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Dependency Package[puppet] has failures: true
Warning: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Skipping because of failed dependencies
Notice: /Stage[main]/Puppet::Service/Service[puppet]: Dependency Package[puppet] has failures: true
Warning: /Stage[main]/Puppet::Service/Service[puppet]: Skipping because of failed dependencies
Notice: Finished catalog run in 171.49 seconds
報錯:YUM安裝失敗,無法下載下傳軟體包,在用戶端yum clean up再yum list恢複倉庫後重試
[root@centostest ~]# puppet agent --server=puppet.ewin.com --test
Info: Retrieving pluginfacts
Info: Retrieving plugin
Info: Caching catalog for centostest.ewin.com
Info: Applying configuration version '1415247249'
Notice: /Stage[main]/Puppet::Install/Package[puppet]/ensure: ensure changed '3.7.3-1.el6' to '3.7.1-1.el6'
Notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content:
--- /etc/puppet/puppet.conf 2014-09-16 04:33:01.000000000 +0800
+++ /tmp/puppet-file20141106-35765-10dpf4t-0 2014-11-06 15:04:50.422305001 +0800
@@ -1,25 +1,12 @@
-[main]
- # The Puppet log directory.
- # The default value is '$vardir/log'.
- logdir = /var/log/puppet
-
- # Where Puppet PID files are kept.
- # The default value is '$vardir/run'.
- rundir = /var/run/puppet
-
- # Where SSL certificates are kept.
- # The default value is '$confdir/ssl'.
- ssldir = $vardir/ssl
-
-[agent]
- # The file in which puppetd stores a list of the classes
- # associated with the retrieved configuratiion. Can be loaded in
- # the separate ``puppet`` executable using the ``--loadclasses``
- # option.
- # The default value is '$confdir/classes.txt'.
- classfile = $vardir/classes.txt
-
- # Where puppetd caches the local configuration. An
- # extension indicating the cache format is added automatically.
- # The default value is '$confdir/localconfig'.
- localconfig = $vardir/localconfig
+### config by puppet ###
+[main]
+ logdir = /var/log/puppet
+ rundir = /var/run/puppet
+ ssldir = $vardir/ssl
+[agent]
+ classfile = $vardir/classes.txt
+ localconfig = $vardir/localconfig
+ server = puppet.ewin.com
+ report = true
+ pluginsync = false
+ runinterval = 10
\ No newline at end of file
Info: Computing checksum on file /etc/puppet/puppet.conf
Info: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Filebucketed /etc/puppet/puppet.conf to puppet with sum 58e2f9765e2994db8e8ab19a3513356e
Notice: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content: content changed '{md5}58e2f9765e2994db8e8ab19a3513356e' to '{md5}fa6ae34360e0b6b7755165fc8e950a76'
Info: /Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]: Scheduling refresh of Class[Puppet::Service]
Info: Class[Puppet::Service]: Scheduling refresh of Service[puppet]
Notice: /Stage[main]/Puppet::Service/Service[puppet]/ensure: ensure changed 'stopped' to 'running'
Info: /Stage[main]/Puppet::Service/Service[puppet]: Unscheduling refresh on Service[puppet]
Notice: Finished catalog run in 222.24 seconds
(6)檢視用戶端日志
[root@centostest ~]# tailf /var/log/message
Nov 6 12:12:50 centostest puppet-agent[34357]: Retrieving pluginfacts
Nov 6 12:12:50 centostest puppet-agent[34357]: Retrieving plugin
Nov 6 12:12:51 centostest puppet-agent[34357]: Caching catalog for centostest.ewin.com
Nov 6 12:12:52 centostest puppet-agent[34357]: Applying configuration version '1415247249'
Nov 6 12:13:29 centostest yum[34565]: Installed: 1:facter-2.2.0-1.el6.x86_64
Nov 6 12:13:31 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Install/Package[facter]/ensure) ensure changed '2.3.0-1.el6' to '2.2.0-1.el6'
Nov 6 12:15:43 centostest puppet-agent[34357]: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
Nov 6 12:15:43 centostest puppet-agent[34357]: puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: [Errno 256] No more mirrors to try.
Nov 6 12:15:43 centostest puppet-agent[34357]: Wrapped exception:
Nov 6 12:15:43 centostest puppet-agent[34357]: Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
Nov 6 12:15:43 centostest puppet-agent[34357]: puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: [Errno 256] No more mirrors to try.
Nov 6 12:15:43 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Install/Package[puppet]/ensure) change from 3.7.3-1.el6 to 3.7.1-1.el6 failed: Could not update: Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
Nov 6 12:15:43 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Install/Package[puppet]/ensure) puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: [Errno 256] No more mirrors to try.
Nov 6 12:15:43 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]) Dependency Package[puppet] has failures: true
Nov 6 12:15:43 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]) Skipping because of failed dependencies
Nov 6 12:15:43 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Service/Service[puppet]) Dependency Package[puppet] has failures: true
Nov 6 12:15:43 centostest puppet-agent[34357]: (/Stage[main]/Puppet::Service/Service[puppet]) Skipping because of failed dependencies
Nov 6 12:15:43 centostest puppet-agent[34357]: Finished catalog run in 171.49 seconds
以上日志是第一次執行puppet agent,安裝facter成功,但下載下傳puppet-3.7.1失敗
Nov 6 15:01:08 centostest puppet-agent[35765]: Retrieving pluginfacts
Nov 6 15:01:08 centostest puppet-agent[35765]: Retrieving plugin
Nov 6 15:01:10 centostest puppet-agent[35765]: Caching catalog for centostest.ewin.com
Nov 6 15:01:10 centostest puppet-agent[35765]: Applying configuration version '1415247249'
Nov 6 15:04:49 centostest yum[35972]: Installed: puppet-3.7.1-1.el6.noarch
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Install/Package[puppet]/ensure) ensure changed '3.7.3-1.el6' to '3.7.1-1.el6'
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content)
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) --- /etc/puppet/puppet.conf#0112014-09-16 04:33:01.000000000 +0800
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) +++ /tmp/puppet-file20141106-35765-10dpf4t-0#0112014-11-06 15:04:50.422305001 +0800
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) @@ -1,25 +1,12 @@
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) -[main]
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The Puppet log directory.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The default value is '$vardir/log'.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - logdir = /var/log/puppet
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) -
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # Where Puppet PID files are kept.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The default value is '$vardir/run'.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - rundir = /var/run/puppet
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) -
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # Where SSL certificates are kept.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The default value is '$confdir/ssl'.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - ssldir = $vardir/ssl
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) -
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) -[agent]
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The file in which puppetd stores a list of the classes
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # associated with the retrieved configuratiion. Can be loaded in
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # the separate ``puppet`` executable using the ``--loadclasses``
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # option.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The default value is '$confdir/classes.txt'.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - classfile = $vardir/classes.txt
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) -
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # Where puppetd caches the local configuration. An
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # extension indicating the cache format is added automatically.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - # The default value is '$confdir/localconfig'.
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) - localconfig = $vardir/localconfig
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) +### config by puppet ####015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) +[main]#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + logdir = /var/log/puppet#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + rundir = /var/run/puppet#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + ssldir = $vardir/ssl#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) +[agent]#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + classfile = $vardir/classes.txt#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + localconfig = $vardir/localconfig#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + server = puppet.ewin.com#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + report = true#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + pluginsync = false#015
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) + runinterval = 10
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) \ No newline at end of file
Nov 6 15:04:50 centostest puppet-agent[35765]: Computing checksum on file /etc/puppet/puppet.conf
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]) Filebucketed /etc/puppet/puppet.conf to puppet with sum 58e2f9765e2994db8e8ab19a3513356e
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) content changed '{md5}58e2f9765e2994db8e8ab19a3513356e' to '{md5}fa6ae34360e0b6b7755165fc8e950a76'
Nov 6 15:04:50 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]) Scheduling refresh of Class[Puppet::Service]
Nov 6 15:04:50 centostest puppet-agent[35765]: (Class[Puppet::Service]) Scheduling refresh of Service[puppet]
Nov 6 15:04:52 centostest puppet-agent[36125]: Reopening log files
Nov 6 15:04:52 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Service/Service[puppet]/ensure) ensure changed 'stopped' to 'running'
Nov 6 15:04:52 centostest puppet-agent[35765]: (/Stage[main]/Puppet::Service/Service[puppet]) Unscheduling refresh on Service[puppet]
Nov 6 15:04:52 centostest puppet-agent[35765]: Finished catalog run in 222.24 seconds
Nov 6 15:04:52 centostest puppet-agent[36125]: Starting Puppet client version 3.7.1
Nov 6 15:04:52 centostest puppet-agent[36125]: Run of Puppet configuration client already in progress; skipping (/var/lib/puppet/state/agent_catalog_run.lock exists)
Nov 6 15:05:06 centostest puppet-agent[36135]: Finished catalog run in 0.46 seconds
以上是重新擷取YUM倉庫後,第二次執行puppet agent的日志, 成功将puppet-3.7.3降為3.7.1版本,是以最好一開始指定好puppet版本安裝。
(7)檢視用戶端測試結果
檢視已安裝版本:
[root@centostest ~]# rpm -aq|grep facter
facter-2.2.0-1.el6.x86_64
[root@centostest ~]# rpm -aq|grep puppet
puppet-3.7.1-1.el6.noarch
檢視服務狀态:
[root@centostest ~]# /etc/init.d/puppet status
puppet (pid 36125) 正在運作...
[root@centostest ~]# chkconfig --list | grep puppet
puppet 0:關閉 1:關閉 2:啟用 3:啟用 4:啟用 5:啟用 6:關閉
檢視配置檔案:
[root@centostest ~]# cat /etc/puppet/puppet.conf
### config by puppet ###
[main]
logdir = /var/log/puppet
rundir = /var/run/puppet
ssldir = $vardir/ssl
[agent]
classfile = $vardir/classes.txt
localconfig = $vardir/localconfig
server = puppet.ewin.com
report = true
pluginsync = false
runinterval = 10
結論:軟體版本成功轉變成指定版本;服務啟動并添加到開機啟動中;配備檔案成功從模闆擷取,參數應用成功。
3、測試配置檔案的變更影響
用戶端修改配置檔案導緻puppet服務重新開機:
[root@centostest ~]# echo "#add a line" >> /etc/puppet/puppet.conf
[root@centostest ~]# tailf /var/log/message
Nov 6 15:33:57 centostest puppet-agent[57545]: (/Stage[main]/Puppet::Config/File[/etc/puppet/puppet.conf]/content) content changed '{md5}29acb66e2f297a5cf2ff6cbe731998f5' to '{md5}bb6d66a4b72890ef1bfa048c0cf179d8'
Nov 6 15:33:57 centostest puppet-agent[56826]: Caught HUP; calling restart
Nov 6 15:33:57 centostest puppet-agent[57545]: (/Stage[main]/Puppet::Service/Service[puppet]) Triggered 'refresh' from 1 events
Nov 6 15:33:57 centostest puppet-agent[57545]: Finished catalog run in 1.10 seconds
Nov 6 15:33:58 centostest puppet-agent[56826]: Caught HUP; calling restart
Nov 6 15:33:58 centostest puppet-agent[56826]: Restarting with '/usr/bin/puppet agent'
Nov 6 15:33:59 centostest puppet-agent[57782]: Reopening log files
Nov 6 15:34:00 centostest puppet-agent[57782]: Starting Puppet client version 3.7.1
Nov 6 15:34:02 centostest puppet-agent[57784]: Finished catalog run in 0.63 seconds
結論:成功改變配置檔案内容,觸發puppet服務重新開機,接下來是agent啟動的資訊。
4、file資源
file {'nginx.conf':
ensure => file, #定義類型:檔案file或目錄directory
mode => '0640', #權限
owner => root, #屬于使用者
group => root, #屬于使用者組
}
其他參數
{
ensure => present|absent|file|directory|link, #present檢查檔案是否存在,如果存在則不建立
backup => , #通過filebucket備份檔案,可備份到其他裝置
checksum => , #檢查檔案是否被修改,預設檢測法為MD5,其他有md5lite\mtime\ctime\none
ctime => , #隻讀屬性,檔案的更新時間
mtime => , #隻讀屬性
content => , #檔案的内容
force => , #強制删除檔案、軟連結及目錄,確定ensure=absent
owner => , #指定檔案的使用者名或使用者ID
group => , #指定檔案的使用者組名或組ID
ignore => , #忽略指定的比對檔案,可以比對目錄結構
link => , #軟連結,類似于ln指令
mode => , #檔案權限配置
path => '/tmp/test',#檔案路徑,使用雙引号,可用标題代替
purge => , #清空目錄中未在manifest中定義的檔案或目錄,必須與recurse=>true使用
recurse => true|false|inf|remote, #遞歸目錄
recurselimit => , #遞歸的目錄的深度,值為數字
replace => true|false, #是否允許覆寫檔案内容,預設為true(覆寫)
source => '/home/123.txt'|'http://'|'puppet:///', #源檔案,本地路徑或URL路徑
sourceselect => firest|all, #可設定多個source源檔案,本參數指定隻複制每一個有效檔案還是全部檔案到目标
target => '/tmp/testlink', #指定目錄,配合ensure => link使用
type => , #隻讀狀态檢查檔案類型
}