centos6下puppet3.x安装和部署

前端之家收集整理的这篇文章主要介绍了centos6下puppet3.x安装和部署前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

puppet安装和部署@H_301_3@

1 puppet是什么@H_301_3@

puppet@H_301_3@是一种基于@H_301_3@ruby语言开发的@H_301_3@Lnux、Unix@H_301_3@、windows平台的集中配置管理系统。它使用自有的puppet描述语言,可管理配置文件file、用户user、cron任务、软件包、系统服务等系统实体。@H_301_3@

把这些系统实体称之为资源,puppet@H_301_3@设计目标是简化对这些资源的管理以及妥善处理资源间的依赖关系。@H_301_3@

依赖于@H_301_3@C/S@H_301_3@(客户端/@H_301_3@服务器)的部署架构。它需要在puppet服务器上安装puppet-server软件包(以下简称master),在需要管理的目标主机上安装puppet客户端软件(以下简称agent)。@H_301_3@

当agent@H_301_3@连接上master后,定义在master端的配置文件会被编译,然后在agent上运行。每个agent默认30分钟会连接一次master,确认配置信息的更新情况。但是这种方式在很多场景下不是很符合系统管理员@H_301_3@的要求,所以很多系统管理员也会将agent@H_301_3@通过crontab@H_301_3@(任务计划)来管理,这样会更加灵活一些。@H_301_3@@H_301_3@

2 puppet优点@H_301_3@

的语法允许你创建一个单独的脚本,用来在你所有的目标主机上建立一个用户。所有的目标主机会依次使用适合本地系统的语法来解释和执行这个模块。如果这个配置是在Red Hat@H_301_3@服务器上执行的话,建立用户使用useradd命令,如果这个配置是在FreddBSD@H_301_3@服务器上执行的话,则使用adduser@H_301_3@命令。@H_301_3@@H_301_3@

另外一个卓越的地方就是它的灵活性。源于开源软件的天性,你可以自由地获得puppet@H_301_3@的源代码。如果你遇到问题并且有能力处理的话,你可以修改或加强puppet@H_301_3@的代码使其适用于你的环境,然后解决这个问题。@H_301_3@

也是易于扩展的。定制软件包的支持功能和特殊的系统环境配置能够快速简单地添加至puppet@H_301_3@的安装程序中。@H_301_3@

3 安装准备工作@H_301_3@

本次实验OS@H_301_3@@H_301_3@为centos 6,服务端为:192.168.180.97,客户端为192.168.180.98

3.1主机时间同步@H_301_3@

为了减少在实验过程中不必要的麻烦,我们需要对所有主机(包括服务器和客户端)进行时间同步。即服务器与客户端的时间相差不能超过秒级。@H_301_3@@H_301_3@

使用以下命令进行时间同步,如下:@H_301_3@@H_301_3@

ntpdate192.168.186.1
#或者用chron*
yuminstallchron*
#修改服务器为192.168.186.1,allow所有:0.0.0.0/0
vim/etc/chron*
/etc/init.d/chron*start
chkconfigchron*on

3.2修改主机名和Hosts@H_301_3@

因为安装 puppet @H_301_3@@H_301_3@时会把主机名写入证书,同时客户端和服务端之间通信需要这个证书。如果主机没有设置主机名,则需要修改服务器与客户端的主机名。

修改主机名。如下:@H_301_3@@H_301_3@

vim/etc/sysconfig/network
hostnamep-server\p-client
vim/etc/hosts
192.168.180.97p-server
192.168.180.98p-client
reboot

3.3关闭iptablesselinux@H_301_3@

我们现在所有的实验都是在关闭iptables@H_301_3@@H_301_3@和selinux下进行的。

/etc/init.d/iptablesstop
chkconfigiptablesoff
sed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config
setenforce0

4 环境准备@H_301_3@

的安装可以分为源码安装和RPM@H_301_3@安装,但是无论哪一种安装方法,我们都需要在安装之前对其进行几点需要说明。@H_301_3@

4.1 puppet安装说明@H_301_3@

由于puppet@H_301_3@是采用语言开发,所以无论是源码还是RPM@H_301_3@方式安装puppet,我们都必须要先安装ruby语言环境@H_301_3@

从2.7@H_301_3@版本以后,就需要hiera的支持。所以也必须安装hiera。@H_301_3@

在前面章节中,我们说明了puppet@H_301_3@@H_301_3@是一个配置管理系统,而管理的资源,都是系统的实体。但是这些实体,是如何来的呢?这就需要我们安装另外一个资源收集软件―facter。

facter@H_301_3@主要用来收集主机的一些信息,比如:cpu@H_301_3@、主机IP@H_301_3@等。facter@H_301_3@把这些收集的信息发送给puppet服务器端,服务器端就可以根据不同的条件来对不同的节点机器生成不同的puppet配置文件。@H_301_3@

4.2安装ruby@H_301_3@

的安装比较简单,我们在此使用是@H_301_3@yum进行安装。如下:@H_301_3@@H_301_3@

yum-yinstallrubyruby-rdoc
#我们可以查看ruby的帮助信息,如下:
ruby-h

4.3安装facter(server&client都装)@H_301_3@

我们可以从puppet@H_301_3@官网下载,如下:@H_301_3@

http://downloads.puppetlabs.com/facter/@H_301_3@@H_301_3@

@H_301_3@@H_301_3@

注意:facter@H_301_3@@H_301_3@也可以通过yum进行安装,在此我们使用的是源码安装。

下载facter 2.4.6(3.x的版本应该是其他软件了没法用)@H_301_3@@H_301_3@,如下:

wgethttp://downloads.puppetlabs.com/facter/facter-2.4.6.tar.gz
tar-zxvffacter-2.4.6.tar.gz
rubyinstall.rb或者./install.rb
#facter安装完毕后,我们来查看下facter的使用帮助。如下:
facter-h

4.4安装hiera@H_301_3@

hiera@H_301_3@主要用于控制一些agent@H_301_3@经常变化的数值,在puppet2.7以后的版本必须要安装。如果不安装的话,我们在安装puppet时,系统会提示如下错误:@H_301_3@

Could not load hiera; cannot install@H_301_3@@H_301_3@

但是在安装hiera@H_301_3@@H_301_3@之前,我们必须安装额外的yum源,否则系统会提示找不到该软件包。

该yum@H_301_3@@H_301_3@源,我们可以puppet官网查看到。如下:

https://docs.puppetlabs.com/guides/puppetlabs_package_repositories.html#for-red-hat-enterprise-linux-and-derivatives@H_301_3@@H_301_3@

按照puppet@H_301_3@@H_301_3@官网的方法进行安装。如下:

rpm-ivhhttp://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm
#yum源配置完毕后,我们现在来安装hiera
yum-yinstallhiera

以上安装完毕后,我们就可以正式安装puppet@H_301_3@@H_301_3@。

5 源码安装puppet@H_301_3@

服务端与客户端的源码安装使用的是同一个软件包,安装步骤一样,只是在配置文件方面有细微的差别。@H_301_3@@H_301_3@

在下载puppet@H_301_3@@H_301_3@源码之前,我们还要在master端和agent端创建puppet运行时使用的用户puppet。

创建puppet@H_301_3@@H_301_3@用户,如下:

useradd-M-s/sbin/nologinpuppet

注意:puppet@H_301_3@服务端是以puppet用户运行的,而puppet客户端是root用户运行。@H_301_3@

这样做的目的是:master@H_301_3@在服务端以普通用户运行安全性比较高,而agent在客户端以root用户运行,是因为master在创建用户修改系统文件等资源时,需要具有最高权限。@H_301_3@

5.1 puppet源码安装(server&client都装)@H_301_3@

的源码包,我们可以从puppet@H_301_3@官网下载。目前puppet最新版为3.8.7(4.x版本太新,虽然说性能提升3-4被,但网上截止发帖日都没有太多参考教程暂不研究),如下:@H_301_3@

http://downloads.puppetlabs.com/puppet/@H_301_3@@H_301_3@

下载puppet@H_301_3@@H_301_3@软件包。如下:

wgethttp://downloads.puppetlabs.com/puppet/puppet-3.8.7.tar.gz
tar-zxvfpuppet-3.8.7.tar.gz
rubyinstall.rb或者./install.rb

查看puppet@H_301_3@@H_301_3@的安装位置:/etc/puppet/@H_301_3@@H_301_3@

5.2 server端配置@H_301_3@

安装完毕后,我们来配置下server@H_301_3@端:@H_301_3@

cpext/redhat/puppet.conf/etc/puppet/
vim/etc/puppet/puppet.conf
server=p-server
certname=p-server
pluginsync=false

其中:@H_301_3@@H_301_3@

@H_301_3@p-server表示puppet@H_301_3@服务器的主机名。@H_301_3@

pluginsync = false@H_301_3@表示关闭模块中的插件功能@H_301_3@@H_301_3@

配置文件修改完毕后,我们现在来配置server@H_301_3@@H_301_3@端的启动脚本,如下:@H_301_3@

cpext/redhat/server.init/etc/init.d/puppetmaster
chmodu+x/etc/init.d/puppetmaster
#注意:master端启动,我们也可以通过puppetmaster命令来启动。
puppetmaster
netstat-tunlp|grep"8140"
tcp000.0.0.0:81400.0.0.0:*LISTEN26486/ruby
#把puppetmaster加入到开机启动项。
chkconfig--addpuppetmaster
chkconfigpuppetmasteron

5.3 agent端配置@H_301_3@

agent@H_301_3@端的配置,@H_301_3@如下:。@H_301_3@

cpext/redhat/puppet.conf/etc/puppet/
cat/etc/puppet/puppet.conf
server=p-server
pluginsync=false

其中:@H_301_3@@H_301_3@

端启动,我们可以通过puppet agent@H_301_3@命令来启动。如下:@H_301_3@

puppetagent
psaux|greppuppet
root238540.01.516222061932?Ss11:490:06/usr/bin/ruby/usr/bin/puppetagent

通过上图,我们也可以看出agent@H_301_3@@H_301_3@端运行时使用的用户为root,而不是puppet用户

注意:@H_301_3@@H_301_3@agent@H_301_3@端我们使用puppet agent@H_301_3@命令来进行各种管理,包括证书的申请、资源的同步,我们都是通过这个命令进行的。@H_301_3@

可以以两种方式运行:第一种方式是命令接参数连接server@H_301_3@,第二种是以守护进程的形式在系统后台运行,默认每30分钟连接一次server,但是这样并不灵活。我们一般是使用第一种方式,并配合crontab使用。@H_301_3@

6 puppet证书授权@H_301_3@

我们知道puppet@H_301_3@@H_301_3@为了安全,采用ssl隧道通信,因此需要申请证书来验证。

6.1server端证书初始化@H_301_3@

当server@H_301_3@@H_301_3@端第一次启动的时候,可以查看/var/log/message日志文件中,有类似如下的信息:

tail-f/var/log/messages
Jun1111:15:25jijilu-testpuppet-master[26440]:Signedcertificaterequestforca
Jun1111:15:25jijilu-testpuppet-master[26440]:jijilu-testhasawaitingcertificaterequest
Jun1111:15:25jijilu-testpuppet-master[26440]:Signedcertificaterequestforjijilu-test
Jun1111:15:25jijilu-testpuppet-master[26440]:RemovingfilePuppet::SSL::CertificateRequestjijilu-testat'/var/lib/puppet/ssl/ca/requests/jijilu-test.pem'
Jun1111:15:25jijilu-testpuppet-master[26440]:RemovingfilePuppet::SSL::CertificateRequestjijilu-testat'/var/lib/puppet/ssl/certificate_requests/jijilu-test.pem'
Jun1111:15:26jijilu-testpuppet-master[26486]:Reopeninglogfiles
Jun1111:15:26jijilu-testpuppet-master[26486]:StartingPuppetmasterversion3.8.1
Jun1111:49:17jijilu-testpuppet-master[26486]:430-test01hasawaitingcertificaterequest

从日志中我们可以看出第一次启动server@H_301_3@@H_301_3@端时,puppet服务会在本地创建认证中心,给自己授权证书和key,这个我们可以在/var/lib/puppet/ssl看到那些证书和key。如下:

ll/var/lib/puppet/ssl
drwxr-xr-x5puppetpuppet4096Jun1111:15ca
drwxr-xr-x2puppetpuppet4096Jun1111:15certificate_requests
drwxr-xr-x2puppetpuppet4096Jun1111:15certs
-rw-r--r--1puppetpuppet958Jun1111:15crl.pem
drwxr-x---2puppetpuppet4096Jun1111:05private
drwxr-x---2puppetpuppet4096Jun1111:06private_keys
drwxr-xr-x2puppetpuppet4096Jun1111:06public_keys

这个目录和/etc/puppet/puppet.conf@H_301_3@@H_301_3@文件中配置的ssldir路径有关系。

我们也可以查看master@H_301_3@@H_301_3@端给自己授权的证书文件,如下:

ll/var/lib/puppet/ssl/ca/signed
-rw-r--r--1puppetpuppet1944Jun1111:15p-server.pem

6.2 agent端申请证书@H_301_3@

端在第一次连接master@H_301_3@端时,会向server端申请证书。如果server端没有授予agent端证书,那么agent端和server端之间的连接是不会建立成功的。@H_301_3@

此时agent@H_301_3@@H_301_3@端会持续等待server端授权证书,并会每隔2分钟去检查server端是否签发证书。

我们现在使用puppet agent --server p-server@H_301_3@@H_301_3@连接master端,如下:

puppetagent--serverp-server@H_301_3@@H_301_3@

6.3server端授权证书@H_301_3@

端申请证书完毕后,需要我们切换到server@H_301_3@端,使用puppet cert命令来对agent端授权证书。@H_301_3@

有关puppet cert@H_301_3@@H_301_3@的使用,我们可以查看pupper cert的帮助信息。如下:

puppercert@H_301_3@@H_301_3@

现在我们可以查看master@H_301_3@@H_301_3@端有哪些主机在申请证书,如下:

puppet cert list@H_301_3@@H_301_3@

现在我们来给agent@H_301_3@@H_301_3@端授权证书,使用如下命令:

puppet cert sign p-client@H_301_3@@H_301_3@

注意:@H_301_3@@H_301_3@

如果实际生产环境客户端数量比较多的话,我们可以一次性授权所有证书。如下:@H_301_3@@H_301_3@

puppetcertsign--all@H_301_3@@H_301_3@

在master@H_301_3@@H_301_3@端查看所有已经通过认证的agent端,如下:

puppetcert-all@H_301_3@@H_301_3@

# @H_301_3@现在我们再来看看master@H_301_3@端给agent端授权的证书文件,如下:@H_301_3@

ll /var/lib/puppet/ssl/ca/signed@H_301_3@@H_301_3@

-rw-r--r-- 1 puppet puppet 1939 Jun 11 11:55 p-client.pem@H_301_3@@H_301_3@

-rw-r--r-- 1 puppet puppet 1944 Jun 11 11:15 p-server.pem@H_301_3@@H_301_3@

通过上图,我们可以看出server@H_301_3@@H_301_3@端授权客户端c.ilanni.com的证书文件是p-client.pem。

6.4查看agent端证书@H_301_3@

在server@H_301_3@@H_301_3@端授权完毕后,我们现在切换到agent端查看授权的证书文件,如下:

ll /var/lib/puppet/ssl/certs@H_301_3@@H_301_3@

-rw-r--r--. 1 puppet puppet 1939 Jun 11 11:57 p-client.pem@H_301_3@@H_301_3@

-rw-r--r--. 1 puppet puppet 1944 Jun 11 11:49 ca.pem@H_301_3@@H_301_3@

通过上图,我们可以看出agent@H_301_3@@H_301_3@端的证书文件p-client.pem与server端的证书文件是一样的。

6.5 puppet证书问题@H_301_3@

在实际的生产环境中,可能会出现已经通过server@H_301_3@@H_301_3@端认证的agent端主机名被修改或者其他一些误操作,从而导致agent端无法与server端进行正常通信。

当遇到这种情况时,我们一般的处理方法是先删除server@H_301_3@@H_301_3@端和agent端的相关的认证文件,然后在agent端重新申请证书。

具体操作如下:@H_301_3@@H_301_3@

端,删除/var/lib/puppet/ssl@H_301_3@目录,如下:@H_301_3@

rm-fr/var/lib/puppet/ssl@H_301_3@@H_301_3@

@H_301_3@@H_301_3@

server@H_301_3@端,删除/var/lib/puppet/ssl/ca/signed@H_301_3@目录下的证书文件,如下:@H_301_3@

rm-fr/var/lib/puppet/ssl/ca/signed/c.ilanni.com.pem@H_301_3@@H_301_3@

以上操作完毕后,agent@H_301_3@@H_301_3@端再次申请证书即可。

7 puppet资源@H_301_3@

环境搭建完毕后,我们现在开始来介绍puppet@H_301_3@资源相关的内容。@H_301_3@

7.1 puppet的资源类型及帮助@H_301_3@

的资源,我们是可以通过相关命令查看puppet@H_301_3@支持的资源类型。@H_301_3@

通过前面的章节,我们知道puppet@H_301_3@@H_301_3@是支持子命令进行查询的。如下:

puppethelpca@H_301_3@@H_301_3@

查看puppet@H_301_3@@H_301_3@支持的资源类型。如下:

puppetdescribe--list@H_301_3@@H_301_3@

也可以通过puppet resource --type@H_301_3@@H_301_3@命令查询,如下:

puppet resource --type@H_301_3@@H_301_3@

通过上图,我们可以看到puppet@H_301_3@@H_301_3@支持用户user、文件file、crontab等大部分的资源。

如果想查看user@H_301_3@@H_301_3@的资源,我们还是继续使用puppet describe user命令进行查看。如下:

puppetdescribeuser@H_301_3@@H_301_3@

如果我们想查看user@H_301_3@在puppet站点site.pp文件中的具体使用方法,可以通过如下命令进行查看:@H_301_3@

puppetresourceuser@H_301_3@@H_301_3@

通过上图,我们可以看到puppet@H_301_3@@H_301_3@已经给出了user使用的例子,我们只需要按照这个例子进行操作即可。

如果puppet describe@H_301_3@@H_301_3@帮助中没有该资源在site.pp站点中的使用详情,我们可以去到puppet resource中进行查看。

这个只是以user@H_301_3@@H_301_3@资源为例,如果想查看host资源的帮助,我们也可以使用类似的命令,如下:

puppet resource host@H_301_3@@H_301_3@

如果你不想在本机进行查看,那么也可以去puppet@H_301_3@@H_301_3@官网进行查看,如下:

https://docs.puppetlabs.com/references/latest/type.html@H_301_3@@H_301_3@

7.2 puppet资源配置文件@H_301_3@

的资源配置文件在服务端的/etc/puppet/manifests@H_301_3@目录下,我们需要在该目录下创建一个站点文件site.pp。@H_301_3@

我们在该文件中创建需要同步到agent@H_301_3@@H_301_3@端的资源,如下:

# cat/etc/puppet/manifests/site.pp@H_301_3@@H_301_3@

nodedefault{@H_301_3@@H_301_3@

file{"/tmp/test.txt":@H_301_3@@H_301_3@

content=>"Hello,calvin,thisispuppettest!n"}@H_301_3@@H_301_3@

}@H_301_3@@H_301_3@

以上命令表示在puppet@H_301_3@@H_301_3@资源配置文件冲创建一个默认节点,使用file资源,在agent端的/tmp/目录下创建test.txt,内容为:Hello,this is puppet test!n

其中的n@H_301_3@@H_301_3@表示换行。如果不加n的话,查看该文件内容时会显示成这样:

Hello,this is puppet test![root@430-test01 ~]#@H_301_3@

同时site.pp@H_301_3@@H_301_3@文件创建完毕后,我们要先重启下server端,如下:

/etc/init.d/puppetmasterrestart@H_301_3@@H_301_3@

现在切换到agent@H_301_3@@H_301_3@端同步该资源,如下:

puppet agent --test --server p-server@H_301_3@@H_301_3@

通过上图,我们可以看到agent@H_301_3@@H_301_3@端已经把server端的资源的同步到本地。

现在我们来查看,agent@H_301_3@@H_301_3@端的/tmp目录下是否有test.txt这个文件。如下:

cat /tmp/test.txt@H_301_3@@H_301_3@

通过上图,我们可以看到agent@H_301_3@@H_301_3@端确实已经同步到server端的资源。/tmp目录下确实有test.txt这个文件,而且内容也确实和server端的一样。

到此有关puppet3.8@H_301_3@@H_301_3@搭建与配置介绍完毕。

8 @H_301_3@ 使用@H_301_3@配置示例@H_301_3@

8.1 文件分发 @H_301_3@

描述:通过puppet@H_301_3@@H_301_3@服务端可以向被管理机(客户端)上推送文件方法是使用file类型的source属性

@H_301_3@@H_301_3@

第一步:@H_301_3@@H_301_3@

# vi /etc/puppet/fileserver.conf @H_301_3@@H_301_3@

@H_301_3@@H_301_3@ [files]

path /opt/ @H_301_3@ @H_301_3@

allow * @H_301_3@@H_301_3@

# @H_301_3@设置文件推送到目录@H_301_3@@H_301_3@

设置准许连接到服务端的主机地址@H_301_3@@H_301_3@

第二步:vi /etc/puppet/manifests/site.pp @H_301_3@@H_301_3@

File@H_301_3@@H_301_3@

{ "/opt/@H_301_3@rlwrap-0.30.tar.gz": @H_301_3@@H_301_3@

source=> "puppet://$puppetserver/files/rlwrap-0.30.tar.gz",@H_301_3@@H_301_3@

} @H_301_3@@H_301_3@

设置服务器上/opt@H_301_3@目录下的rlwrap-0.30.tar.gz为被传送文件 @H_301_3@

#@H_301_3@此处“$puppetserver@H_301_3@”是Puppet Server端的名称,即hostname,在hosts文件里指定,生产环境下用内部的DNS上作解析 @H_301_3@

第三步: @H_301_3@@H_301_3@

在客户端执行更新命令 @H_301_3@@H_301_3@

# puppet agent --test --server jijilu-test @H_301_3@@H_301_3@

Info: Caching catalog for 430-test01@H_301_3@@H_301_3@

Info: Applying configuration version '1434090440'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/File[/opt/rlwrap-0.30.tar.gz]/ensure: defined content as '{md5}03d8bd4996945ea32d3c7d5dc38c956e'@H_301_3@@H_301_3@

Notice: Finished catalog run in 0.44 seconds@H_301_3@@H_301_3@

查看/opt@H_301_3@@H_301_3@目录下已经同步这个文件

# ll /opt/@H_301_3@@H_301_3@

total 184@H_301_3@@H_301_3@

drwxr-xr-x. 2 root root @H_301_3@@H_301_3@4096 Jun 22 2012 rh

-rw-r--r--. 1 root root 184037 Jun 12 15:41 rlwrap-0.30.tar.gz@H_301_3@@H_301_3@

8.2 修改文件属性 @H_301_3@

描述:把@H_301_3@/tmp/test.txt@H_301_3@文件的权限改为puppet@H_301_3@用户,并设置权限为666。 @H_301_3@

第一步:编辑服务端的site.pp @H_301_3@ @H_301_3@

vi /etc/puppet/manifests/site.pp @H_301_3@@H_301_3@

file@H_301_3@@H_301_3@

{ "/tmp//tmp/test.txt ": owner => "puppet",0);">group => "puppet",mode => 666,0);">} @H_301_3@@H_301_3@

第二步:在客户端执行命令 @H_301_3@@H_301_3@

Info: Applying configuration version '1434095252'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/File[/tmp/test.txt]/owner: owner changed 'root' to 'puppet'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/File[/tmp/test.txt]/group: group changed 'root' to 'puppet'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/File[/tmp/test.txt]/mode: mode changed '0644' to '0666'@H_301_3@@H_301_3@

Notice: Finished catalog run in 0.03 seconds@H_301_3@@H_301_3@

8.3 执行SHELL命令或shell脚本 @H_301_3@

描述:通过puppet@H_301_3@@H_301_3@分发执行shell脚本,在客户端的opt目录下新建一目录shelldir。

exec { "exec-mkdir": @H_301_3@ @H_301_3@cwd => "/opt",

command @H_301_3@@H_301_3@=> "sh /opt/lgh.sh",0);">user => "root",@H_301_3@ @H_301_3@

path => "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin",0);">第二步:在客户端编辑上一步command@H_301_3@@H_301_3@路径中指定的shell脚本,例如

vi /opt/lgh.sh @H_301_3@ @H_301_3@

#!/bin/bash @H_301_3@@H_301_3@

mkdir /opt/shelldir @H_301_3@ @H_301_3@

第三步:在客户端执行命令 @H_301_3@@H_301_3@

@H_301_3@@H_301_3@Info: Caching catalog for 430-test01

Info: Applying configuration version '1434095394'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/Exec[exec-mkdir]/returns: executed successfully@H_301_3@@H_301_3@

Notice: Finished catalog run in 0.21 seconds@H_301_3@@H_301_3@

在/opt@H_301_3@@H_301_3@目录下查看shelldir目录有没有建立。

8.4 cron计划任务 @H_301_3@

描述:接上面的shell@H_301_3@@H_301_3@程序实例,在17:30执行/opt/lgh.sh。

cron { "cron-shell": @H_301_3@ @H_301_3@

command => "sh /opt/lgh.sh",0);">minute => "30",0);">hour => "17" @H_301_3@@H_301_3@

# puppet agent --test --server jijilu-test@H_301_3@@H_301_3@

Info: Applying configuration version '1434095710'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/Cron[cron-shell]/ensure: created@H_301_3@@H_301_3@

Notice: Finished catalog run in 0.12 seconds@H_301_3@@H_301_3@

然后在客户端使用@H_301_3@@H_301_3@

# crontab -l@H_301_3@查看效果 @H_301_3@@H_301_3@

# crontab -l@H_301_3@@H_301_3@

# HEADER: This file was autogenerated at Fri Jun 12 15:55:11 +0800 2015 by puppet.@H_301_3@@H_301_3@

# HEADER: While it can still be managed manually,it is definitely not recommended.@H_301_3@@H_301_3@

# HEADER: Note particularly that the comments starting with 'Puppet Name' should@H_301_3@@H_301_3@

# HEADER: not be deleted,as doing so could cause duplicate cron jobs.@H_301_3@@H_301_3@

* * * * * /usr/sbin/ntpdate 10.10.1.230 >/dev/null 2>&1@H_301_3@@H_301_3@

# Puppet Name: cron-shell@H_301_3@@H_301_3@

30 17 * * * sh /opt/lgh.sh@H_301_3@@H_301_3@

8.5 服务检查及状态修改 @H_301_3@

@H_301_3@描述:可以通过puppet@H_301_3@对一些服务进行检查。puppet是通过service命令操作的。所以,只能针对在/etc/init.d/目录下的服务 @H_301_3@

实例:把客户端的防火墙起来 @H_301_3@@H_301_3@

service @H_301_3@@H_301_3@

{ iptables: @H_301_3@@H_301_3@

ensure => "running",0);">Info: Applying configuration version '1434095840'@H_301_3@@H_301_3@

Notice: /Stage[main]/Main/Service[iptables]/ensure: ensure changed 'stopped' to 'running'@H_301_3@@H_301_3@

Info: /Stage[main]/Main/Service[iptables]: Unscheduling refresh on Service[iptables]@H_301_3@@H_301_3@

Notice: Finished catalog run in 0.20 seconds@H_301_3@@H_301_3@

# /etc/init.d/iptables status@H_301_3@@H_301_3@

Table: filter@H_301_3@@H_301_3@

Chain INPUT (policy ACCEPT)@H_301_3@@H_301_3@

num @H_301_3@@H_301_3@target prot opt source destination

1 @H_301_3@@H_301_3@ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED

2 @H_301_3@@H_301_3@ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0

3 @H_301_3@@H_301_3@ACCEPT all -- 0.0.0.0/0 0.0.0.0/0

4 @H_301_3@@H_301_3@ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22

5 @H_301_3@@H_301_3@REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)@H_301_3@@H_301_3@

1 @H_301_3@@H_301_3@REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)@H_301_3@@H_301_3@

num @H_301_3@@H_301_3@target prot opt source destination

猜你在找的CentOS相关文章