ewrfdsfwqe 发表于 2014-11-18 09:36:02

Puppet模块(三):puppet模块及file资源

作用:通过puppet模块自动控制客户端的puppet配置,当需要修改客户端的puppet配置时不用在客户端一一设置。

1、服务端配置puppet模块
(1)模块清单

1
2
3
4
5
6
7
8
9
10
11
# 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)定义参数类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 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)定义安装类

1
2
3
4
5
6
7
8
9
# 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)定义配置类

1
2
3
4
5
6
7
8
9
10
11
12
# 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)定义配置模板

1
2
3
4
5
6
7
8
9
10
11
12
13
# vi /etc/puppet/modules/puppet/template/puppet.conf.erb
### config bypuppet ###

    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = $vardir/ssl

    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)定义服务类

1
2
3
4
5
6
7
8
9
10
# 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主类

1
2
3
4
# vi /etc/puppet/modules/puppet/manifests/init.pp
class puppet {
include puppet::params,puppet::install,puppet::config,puppet::service
}




(8)定义节点文件,调用模块
# vi /etc/puppet/manifests/centostest.pp
node "centostest.ewin.com" {
include ntp, yum, puppet
}
(9)应用节点文件

1
2
# vi /etc/puppet/manifests/site.pp
import "centostest.pp"






2、测试:软件安装版本、配置文件、服务启动
(1)查看已安装版本

1
2
3
4
5
6
# facter | grep operatingsystemmajrelease
operatingsystemmajrelease => 6
# rpm -aq|grep puppet
puppet-3.7.3-1.el6.noarch
# rpm -aq|grep facter
facter-2.3.0-1.el6.x86_64




(2)查看服务状态

1
2
3
4
5
6
# /etc/init.d/puppet stop
Stopping puppet agent:                                     [确定]
# /etc/init.d/puppet status
puppet 已停
# chkconfig --list | grep puppet
puppet          0:关闭1:关闭2:关闭3:关闭4:关闭5:关闭6:关闭




(3)查看配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# cat /etc/puppet/puppet.conf

    # 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

    # 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)客户端执行测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 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/Puppet::Install/Package/ensure: current_value 2.3.0-1.el6, should be 2.2.0-1.el6 (noop) #说明:版本将变成2.2.0-1.el6
Notice: /Stage/Puppet::Install/Package/ensure: current_value 3.7.3-1.el6, should be 3.7.1-1.el6 (noop) #说明:版本将变成3.7.1-1.el6
Notice: Class: Would have triggered 'refresh' from 2 events
Notice: /Stage/Puppet::Config/File/content:#说明:生成puppet.conf配置文件内容
--- /etc/puppet/puppet.conf 2014-11-04 06:23:12.000000000 +0800
+++ /tmp/puppet-file20141106-34117-1abwj46-02014-11-06 12:04:04.724000002 +0800
@@ -1,25 +1,12 @@
-
-    # 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
-
-
-    # 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 bypuppet ###
+
+    logdir = /var/log/puppet
+    rundir = /var/run/puppet
+    ssldir = $vardir/ssl
+
+    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/Puppet::Config/File/content: current_value {md5}58e2f9765e2994db8e8ab19a3513356e, should be {md5}fa6ae34360e0b6b7755165fc8e950a76 (noop)
Info: /Stage/Puppet::Config/File: Scheduling refresh of Class #说明:配置文件的改变将触发service.pp
Notice: Class: Would have triggered 'refresh' from 1 events
Info: Class: Scheduling refresh of Service
Notice: Class: Would have triggered 'refresh' from 1 events
Notice: /Stage/Puppet::Service/Service/ensure: current_value stopped, should be running (noop) #说明:服务当前是关闭的,将变成运行
Info: /Stage/Puppet::Service/Service: Unscheduling refresh on Service
Notice: Class: Would have triggered 'refresh' from 1 events
Notice: Stage: Would have triggered 'refresh' from 3 events
Notice: Finished catalog run in 0.70 seconds





(5)真正执行puppet agent(不带--noop参数)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 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/Puppet::Install/Package/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: 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: No more mirrors to try.
Error: /Stage/Puppet::Install/Package/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: No more mirrors to try.
Notice: /Stage/Puppet::Config/File: Dependency Package has failures: true
Warning: /Stage/Puppet::Config/File: Skipping because of failed dependencies
Notice: /Stage/Puppet::Service/Service: Dependency Package has failures: true
Warning: /Stage/Puppet::Service/Service: Skipping because of failed dependencies
Notice: Finished catalog run in 171.49 seconds




    报错:YUM安装失败,无法下载软件包,在客户端yum clean up再yum list恢复仓库后重试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# 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/Puppet::Install/Package/ensure: ensure changed '3.7.3-1.el6' to '3.7.1-1.el6'
Notice: /Stage/Puppet::Config/File/content:
--- /etc/puppet/puppet.conf 2014-09-16 04:33:01.000000000 +0800
+++ /tmp/puppet-file20141106-35765-10dpf4t-02014-11-06 15:04:50.422305001 +0800
@@ -1,25 +1,12 @@
-
-    # 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
-
-
-    # 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 bypuppet ###
+
+    logdir = /var/log/puppet
+    rundir = /var/run/puppet
+    ssldir = $vardir/ssl
+
+    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/Puppet::Config/File: Filebucketed /etc/puppet/puppet.conf to puppet with sum 58e2f9765e2994db8e8ab19a3513356e
Notice: /Stage/Puppet::Config/File/content: content changed '{md5}58e2f9765e2994db8e8ab19a3513356e' to '{md5}fa6ae34360e0b6b7755165fc8e950a76'
Info: /Stage/Puppet::Config/File: Scheduling refresh of Class
Info: Class: Scheduling refresh of Service
Notice: /Stage/Puppet::Service/Service/ensure: ensure changed 'stopped' to 'running'
Info: /Stage/Puppet::Service/Service: Unscheduling refresh on Service
Notice: Finished catalog run in 222.24 seconds




(6)查看客户端日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# tailf /var/log/message
Nov6 12:12:50 centostest puppet-agent: Retrieving pluginfacts
Nov6 12:12:50 centostest puppet-agent: Retrieving plugin
Nov6 12:12:51 centostest puppet-agent: Caching catalog for centostest.ewin.com
Nov6 12:12:52 centostest puppet-agent: Applying configuration version '1415247249'
Nov6 12:13:29 centostest yum: Installed: 1:facter-2.2.0-1.el6.x86_64
Nov6 12:13:31 centostest puppet-agent: (/Stage/Puppet::Install/Package/ensure) ensure changed '2.3.0-1.el6' to '2.2.0-1.el6'
Nov6 12:15:43 centostest puppet-agent: 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:
Nov6 12:15:43 centostest puppet-agent:   puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: No more mirrors to try.
Nov6 12:15:43 centostest puppet-agent: Wrapped exception:
Nov6 12:15:43 centostest puppet-agent: Execution of '/usr/bin/yum -d 0 -e 0 -y downgrade puppet-3.7.1-1.el6' returned 1: Error Downloading Packages:
Nov6 12:15:43 centostest puppet-agent:   puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: No more mirrors to try.
Nov6 12:15:43 centostest puppet-agent: (/Stage/Puppet::Install/Package/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:
Nov6 12:15:43 centostest puppet-agent: (/Stage/Puppet::Install/Package/ensure)   puppet-3.7.1-1.el6.noarch: failure: puppet-3.7.1-1.el6.noarch.rpm from puppetlabs-products: No more mirrors to try.
Nov6 12:15:43 centostest puppet-agent: (/Stage/Puppet::Config/File) Dependency Package has failures: true
Nov6 12:15:43 centostest puppet-agent: (/Stage/Puppet::Config/File) Skipping because of failed dependencies
Nov6 12:15:43 centostest puppet-agent: (/Stage/Puppet::Service/Service) Dependency Package has failures: true
Nov6 12:15:43 centostest puppet-agent: (/Stage/Puppet::Service/Service) Skipping because of failed dependencies
Nov6 12:15:43 centostest puppet-agent: Finished catalog run in 171.49 seconds




#以上日志是第一次执行puppet agent,安装facter成功,但下载puppet-3.7.1失败


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
Nov6 15:01:08 centostest puppet-agent: Retrieving pluginfacts
Nov6 15:01:08 centostest puppet-agent: Retrieving plugin
Nov6 15:01:10 centostest puppet-agent: Caching catalog for centostest.ewin.com
Nov6 15:01:10 centostest puppet-agent: Applying configuration version '1415247249'
Nov6 15:04:49 centostest yum: Installed: puppet-3.7.1-1.el6.noarch
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Install/Package/ensure) ensure changed '3.7.3-1.el6' to '3.7.1-1.el6'
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content)
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) --- /etc/puppet/puppet.conf#0112014-09-16 04:33:01.000000000 +0800
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +++ /tmp/puppet-file20141106-35765-10dpf4t-0#0112014-11-06 15:04:50.422305001 +0800
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) @@ -1,25 +1,12 @@
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The Puppet log directory.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The default value is '$vardir/log'.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    logdir = /var/log/puppet
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # Where Puppet PID files are kept.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The default value is '$vardir/run'.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    rundir = /var/run/puppet
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # Where SSL certificates are kept.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The default value is '$confdir/ssl'.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    ssldir = $vardir/ssl
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The file in which puppetd stores a list of the classes
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # associated with the retrieved configuratiion.Can be loaded in
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # the separate ``puppet`` executable using the ``--loadclasses``
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # option.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The default value is '$confdir/classes.txt'.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    classfile = $vardir/classes.txt
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # Where puppetd caches the local configuration.An
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # extension indicating the cache format is added automatically.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    # The default value is '$confdir/localconfig'.
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) -    localconfig = $vardir/localconfig
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +### config bypuppet ####015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    logdir = /var/log/puppet#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    rundir = /var/run/puppet#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    ssldir = $vardir/ssl#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    classfile = $vardir/classes.txt#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    localconfig = $vardir/localconfig#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    server = puppet.ewin.com#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    report = true#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    pluginsync = false#015
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) +    runinterval = 10
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) \ No newline at end of file
Nov6 15:04:50 centostest puppet-agent: Computing checksum on file /etc/puppet/puppet.conf
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File) Filebucketed /etc/puppet/puppet.conf to puppet with sum 58e2f9765e2994db8e8ab19a3513356e
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File/content) content changed '{md5}58e2f9765e2994db8e8ab19a3513356e' to '{md5}fa6ae34360e0b6b7755165fc8e950a76'
Nov6 15:04:50 centostest puppet-agent: (/Stage/Puppet::Config/File) Scheduling refresh of Class
Nov6 15:04:50 centostest puppet-agent: (Class) Scheduling refresh of Service
Nov6 15:04:52 centostest puppet-agent: Reopening log files
Nov6 15:04:52 centostest puppet-agent: (/Stage/Puppet::Service/Service/ensure) ensure changed 'stopped' to 'running'
Nov6 15:04:52 centostest puppet-agent: (/Stage/Puppet::Service/Service) Unscheduling refresh on Service
Nov6 15:04:52 centostest puppet-agent: Finished catalog run in 222.24 seconds
Nov6 15:04:52 centostest puppet-agent: Starting Puppet client version 3.7.1
Nov6 15:04:52 centostest puppet-agent: Run of Puppet configuration client already in progress; skipping(/var/lib/puppet/state/agent_catalog_run.lock exists)
Nov6 15:05:06 centostest puppet-agent: Finished catalog run in 0.46 seconds




#以上是重新获取YUM仓库后,第二次执行puppet agent的日志, 成功将puppet-3.7.3降为3.7.1版本,因此最好一开始指定好puppet版本安装。
(7)查看客户端测试结果
查看已安装版本:

1
2
3
4
# rpm -aq|grep facter
facter-2.2.0-1.el6.x86_64
# rpm -aq|grep puppet
puppet-3.7.1-1.el6.noarch




查看服务状态:

1
2
3
4
# /etc/init.d/puppet status
puppet (pid36125) 正在运行...
# chkconfig --list | grep puppet
puppet          0:关闭1:关闭2:启用3:启用4:启用5:启用6:关闭




查看配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
# cat /etc/puppet/puppet.conf
### config bypuppet ###

    logdir = /var/log/puppet
    rundir = /var/run/puppet
    ssldir = $vardir/ssl

    classfile = $vardir/classes.txt
    localconfig = $vardir/localconfig
    server = puppet.ewin.com
    report = true
    pluginsync = false
    runinterval = 10




    结论:软件版本成功转变成指定版本;服务启动并添加到开机启动中;配备文件成功从模板获取,参数应用成功。

3、测试配置文件的变更影响
客户端修改配置文件导致puppet服务重启:

1
2
3
4
5
6
7
8
9
10
11
# echo "#add a line" >> /etc/puppet/puppet.conf
# tailf /var/log/message
Nov6 15:33:57 centostest puppet-agent: (/Stage/Puppet::Config/File/content) content changed '{md5}29acb66e2f297a5cf2ff6cbe731998f5' to '{md5}bb6d66a4b72890ef1bfa048c0cf179d8'
Nov6 15:33:57 centostest puppet-agent: Caught HUP; calling restart
Nov6 15:33:57 centostest puppet-agent: (/Stage/Puppet::Service/Service) Triggered 'refresh' from 1 events
Nov6 15:33:57 centostest puppet-agent: Finished catalog run in 1.10 seconds
Nov6 15:33:58 centostest puppet-agent: Caught HUP; calling restart
Nov6 15:33:58 centostest puppet-agent: Restarting with '/usr/bin/puppet agent'
Nov6 15:33:59 centostest puppet-agent: Reopening log files
Nov6 15:34:00 centostest puppet-agent: Starting Puppet client version 3.7.1
Nov6 15:34:02 centostest puppet-agent: Finished catalog run in 0.63 seconds




结论:成功改变配置文件内容,触发puppet服务重启,接下来是agent启动的信息。

4、file资源

1
2
3
4
5
6
file {'nginx.conf':
ensure => file,    #定义类型:文件file或目录directory
mode   => '0640',#权限
owner=> root,    #属于用户
group=> root,    #属于用户组
}




其他参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
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         => , #只读状态检查文件类型
}






页: [1]
查看完整版本: Puppet模块(三):puppet模块及file资源